泛型: 参数化类型
定义:
- 将数据类型由原来的具体类型变成一个参数,(类似于方法中的变量参数,可以称为类型实参),
- 在使用/调用时,传入具体的类型,(类型实参)。
作用位置:
类,接口,方法
泛型类:
特点:
如果未指定泛型类型,则默认为java.lang.Object。
Java中的集合框架所涉及的接口和类,大都是泛型接口和泛型类。
利用泛型类、泛型接口的实现类创建对象,可以不指定泛型类型。
public class Generic<T> {
T key;
public Generic(T key) {
super();
this.key = key;
}
public T getKey() {
return key;
}
public void setKey(T key) {
this.key = key;
}
public static void main(String[] args) {
Generic<String> genericString =new Generic<String>("abc");
Generic<Integer> genericInteger =new Generic<Integer>(123);
System.out.println(genericInteger.getKey());
System.out.println(genericString.getKey());
Generic genericObject =new Generic("Object");
System.out.println(genericObject.getKey());
Generic g1 =new Generic(123);
Generic g2 =new Generic(12.3);
Generic g3 =new Generic('1');
System.out.println(g1.getClass());
System.out.println(g2.getClass());
System.out.println(g3.getClass());
/*
* 结果:class Sdut.Generic
class Sdut.Generic
class Sdut.Generic
结论:泛型只在编程阶段有效
因此:不能 对确切的泛型类型使用instanceof操作
例如:if(genericInteger instanceof Generic<Integer>) 错误
正确:if(genericInteger instanceof Generic)
* */
}
}
泛型的上下边界
public class Generic<T extends Number> {//定义了上边界Number类(数值类)