Java回炉之泛型
泛型类
- 定义
public class Demo<T>{
public void method(T t){
}
}
- 使用
new Demo<String>().method("test");
泛型方法
- 定义
public class Demo{
public <T> void method(T t){
}
}
- 使用
new Demo().method("test");
泛型接口
- 定义
public interface Demo<T>{
public abstract void method(T t);
}
- 指定类型实现及使用
public class DemoImpl implments Demo<String>{
public void method(String s){}
}
//Demo<String> demo = new DemoImpl();demo.method("test");
- 泛型实现及使用
public class DemoImpl<T> implements<T>{
public void method(T t){}
}
//Demo<Sting> demo =new DemoImpl<String>(); demo.method("test");
泛型中的通配符
假设如下定义
public class Base{}
public class A extends Base{}
public class B extends Base{}
public class Demo<T>{}
- ?通配符
Demo<?> demo = new Demo<Object>();
Demo<?> demo = new Demo<Base>();
Demo<?> demo = new Demo<A>();
Demo<?> demo = new Demo<B>();
//如果不写`?`则前后必须一致
- ? extends E
Demo<? extends Base> demo = new Demo<Object>();//编译报错
Demo<? extends Base> demo = new Demo<Base>();
Demo<? extends Base> demo = new Demo<A>();
Demo<? extends Base> demo = new Demo<B>();
- ? super E
Demo<? super Base> demo = new Demo<Base>();
Demo<? super Base> demo = new Demo<Base>();
Demo<? super Base> demo = new Demo<A>();//编译报错
Demo<? super Base> demo = new Demo<B>();//编译报错