泛型
- java泛型是jdk1.5中引入的一个新特性,其本质是参数化类型,把类型作为参数传递;
- 常见形式有:泛型类,泛型接口,泛型方法
- 语法: <T,...> T称为类型占位符,表示一种引用类型;
- 好处:1.提高代码的重用率;
2.防止类型转换异常,提高代码的安全性;
【注意】1. 只能是引用类型
2. 不同泛型间不能相互赋值;
泛型集合
定义集合时,设置泛型,避免集合中装入不同类型的数据;
/**
* 泛型类
* 语法:类名<T>
*/
public class GenericClass<T> {
//使用泛型
//1.创建变量
T t;
//2.作为方法参数
public void show(T t){
System.out.println(t);
}
//3.作为方法返回值
public T getT(){
return t;
}
}
/**
* 泛型接口
* 语法:接口名<T,...>
* @param <T>
*/
public interface GenericInterface<T> {
String name="tom";
T server(T t);
}
public class InterfaceImpl implements GenericInterface<String>{
@Override
public String server(String s) {
System.out.println("泛型接口,"+s);
return s;
}
}
/**
* 泛型类继承
* @param <T>
*/
public class InterfaceImpl2<T> implements GenericInterface<T> {
@Override
public T server(T t) {
System.out.println("泛型类、泛型接口,"+t);
return t;
}
}
public class GenericMethod {
public <T> T show(T t){
System.out.println("泛型方法,"+t);
return t;
}
}
public class test {
public static void main(String[] args) {
//使用泛型类创建对象
System.out.println("-----------String-----------");
GenericClass<String> genericDemo=new GenericClass<String>();
genericDemo.t="hello";
genericDemo.show("hello word");
String s=genericDemo.getT();
System.out.println(s);
System.out.println("------------Integer----------");
GenericClass<Integer> genericDemo2=new GenericClass<Integer>();
genericDemo2.t=100;
genericDemo2.show(200);
Integer integer=genericDemo2.getT();
System.out.println(integer.toString());
System.out.println("-----------接口实现 String-----------");
InterfaceImpl impl=new InterfaceImpl();
impl.server("hello");
InterfaceImpl2<Integer> impl2=new InterfaceImpl2<>();
impl2.server(100);
GenericMethod genericMethod=new GenericMethod();
genericMethod.show("Hello");
genericMethod.show(100);
}
}