对于java中的泛型自己理解为:泛型的定义说白了就是,传带参数类型的类,方法,接口,就好比是定义时方法中传入参数一样
为什么定义泛型:
1.Java泛型可以解决类型安全问题,如果没有泛型集合中可以放入任何类型
2.没有泛型的遇到的麻烦:从集合中获取参数的时候,需要强制转换
3.泛型的使用有使用泛型类,使用泛型方法
注意:
1、泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。
2、同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。
3、泛型的类型参数可以有多个。
4、泛型的参数类型可以使用extends语句,例如<T extendssuperclass>。习惯上成为“有界类型”。
5、泛型的参数类型还可以是通配符类型。例如Class<?> classType =Class.forName(Java.lang.String);
代码:
泛型的定义
//定义泛型类,可以理解为带一个参数类型为T的类
public class Dao <T>{
//类中的方法和变量的声明可以用该类的类型T
public T get(int id){
//定义T类型的变量
T result = null;
return result;
}
//定义泛型方法,<E>和定义类一样表示
//传入一个参数E类型的方法,该<>中可以有多个参数,之间用逗号隔开
public <E> E gets(E name){
E result = null;
return result;
}
}
继承泛型类的情况
第一种:继承时把父类泛型参数带上,而子类没有则编译不过,如
public class Child1 extends Parent<T> {
}
第二种:子类也带上父类的参数类型,编译通过
public class Child2<T> extends Parent<T> {
}
第三种:父类不带上参数<T>,编译通过
public class Child3 extends Parent{
}
还有关泛型继承的几种测试参考:
http://blog.csdn.net/java2000_net/article/details/3081472
还请各位指出不足之处,谢了