java中泛型的继承
2016-01-02 11:51
316 查看
现在有如下两个类:
如果按照这样的方式继承的话,编译器将报错:T cannot be resolved to a type
不存在T这个类型,所以说,如果父类具有泛型的话,子类继承父类一定要传一个实际的参数,所以可以这样继承:
这种方式继承是可以得,因为当子类new出一个对象时,将会传递一个实际的类型给子类的泛型T,这个时候再用子类的T去初始化父类的T,这个时候父类的泛型T就是一个实际的类型了。
另外如果继承这样使用:
public class GenericSon extends GenericFather {
}
没有指定GenericFather的泛型,那么GenericFather中使用了泛型的方法将会变成接收Object方法
总结:
定义了泛型类可不是用泛型,如果不使用那么里面所有使用泛型的地方默使用Object,继承泛型的时候要给父类的泛型T指定一个存在的类型,这个类型可以是一个已经定义过的类,也可以是子类的泛型.
public class GenericFather<T> { public void (T t) { System.out.println(t); } } public class GenericSon extends Generic<T> { }
如果按照这样的方式继承的话,编译器将报错:T cannot be resolved to a type
不存在T这个类型,所以说,如果父类具有泛型的话,子类继承父类一定要传一个实际的参数,所以可以这样继承:
public class GenericSon<T> extends GenericFather { }
这种方式继承是可以得,因为当子类new出一个对象时,将会传递一个实际的类型给子类的泛型T,这个时候再用子类的T去初始化父类的T,这个时候父类的泛型T就是一个实际的类型了。
另外如果继承这样使用:
public class GenericSon extends GenericFather {
}
没有指定GenericFather的泛型,那么GenericFather中使用了泛型的方法将会变成接收Object方法
总结:
定义了泛型类可不是用泛型,如果不使用那么里面所有使用泛型的地方默使用Object,继承泛型的时候要给父类的泛型T指定一个存在的类型,这个类型可以是一个已经定义过的类,也可以是子类的泛型.
相关文章推荐
- Eclipse连接mysql
- java集合:链表:Java:LinkedList<E>
- spring mvc
- Java final 关键字
- java编译运行详解
- java 内部类 和 匿名内部类
- java成员方法
- Win7 64位安装JDK的步骤,并且附上测试程序
- java初始化之变量初始化
- Java super和this的异同总结
- spring05 spring的配置信息
- java中的包
- spring04 数据库操作 spring+jdbc/hibernate 及其声明式事务处理
- (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
- spring03 AOP、各种通知、一/多个切面例子
- spring02 注解方式实现MVC、spring的继承、代理模式(静/动) :jdk动态代理,cglib动态代理
- spring01 环境搭建、控制反转、依赖注入、springIOC和DI实现MVC模式
- eclipse(ini)
- Eclipse下设置github开发环境
- JAVA坏境变量中的JAVA_HOME path classpath 的设置与作用