java 如何继承泛型

public class TestServiceImpl extends ServiceImpl<TestMapper, Test>
上面这句是直接继承泛型的写法。

我想要的是这样
父类<M, T> extends ServiceImpl<M, T>
public class TestServiceImpl extends 父类<TestMapper, Test>

想问下如何实现呢

其实我想多继承,所以加了个父类,但泛型这部分我就不会写了

阅读 13.2k
3 个回答

补充一下泛型类的继承问题,例如父类声明如下:

public class ServiceImpl<M, T> {
    public void test(M, T) {
        // do something
    }
}

子类继承父类分两种情况:

  1. 保持子类的泛型化:

    public TestServiceImpl<M, T> extends ServiceImpl<M, T> {
        @Override
        public void test(M, T) {
            // do something
        }
    }
  2. 子类不再泛型化

    public TestServiceImpl extends ServiceImpl<String, Integer> {
        @Override
        public void test(String, Integer) {
            // do something
        }
    }

这样解释是不是清楚了很多!

子类<M,N> extends 父类<M,N>
这和多继承有啥关系。。。
没什么关系

我只是想继承 ServiceImpl<TestMapper, Test> 还继承 父类

ServiceImpl<TestMapper, Test> 是别人写的,
但我想添加些方法,所以想自己写个父类,不知道怎么写了

新手上路,请多包涵

泛型继承的原则

继承泛型类时,必须对父类中的类型参数进行初始化。或者说父类中的泛型参数必须在子类中可以确定具体类型。

例如:有一个泛型类Parent<T>,那么Son类定义时有两种方式初始化父类型的类型参数:

1 用具体类型初始化:

public class Son extends Parent<String>{}

2 用子类中的泛型类型初始化父类:

public class Son<T> extends Parent<T>{}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题