我对泛型的理解有限,这个只是极其简单的一个测试,欢迎指正,一起完善。
泛型方法的继承
默认情况,父类,子类都是泛型方法,没有任何问题
- class Parent0 {
- <T> void say() {
- System.out.println("Parent");
- }
- }
- class Child0 extends Parent0 {
- <T> void say() {
- System.out.println("Child");
- }
- }
- class Parent1 {
- <T> void say() {
- System.out.println("Parent");
- }
- }
- class Child1 extends Parent1 {
- void say() {
- System.out.println("Child");
- }
- }
第2种情况,父类没有泛型,子类有泛型,编译失败
- class Parent2 {
- void say() {
- }
- }
- class Child2 extends Parent2 {
- <T> void say() {
- }
- }
第3中情况,父类泛型,子类用泛型的参数的子类,正常
- class Parent3 {
- <Number> void say(Number number) {
- }
- }
- class Child3 extends Parent3 {
- <T extends Number> void say(T number) {
- }
- }
类的泛型继承
几种情况都可以
- class Parent4<T> {
- }
- class Child4 extends Parent4 {
- }
- class Parent5 {
- }
- class Child5<T> extends Parent5 {
- }
- class Parent6<T> {
- }
- class Child6<TT extends T> extends Parent6 {
- }
只有第二种情况,出现了编译错误。 因为他覆盖了父类方法,可父类却没有泛型的返回值。