举例:
泛型类:
public Class Demo <T> {
private T name ;
public T getName(){
return obj ;
public void setName(T name ){
this.name = name ;
}
public Class DemoTest{
public static void main (String[] args){
Demo<String> demo = new Demo();
demo.set("hello");
System.out.println(demo.get());
}
}
泛型方法:
public Class Demo{
public<T> void show(T t ) {
System.out.println(t) ;
}
}
Class DemoTest {
Demo d = new Demo() ;
d.show("hello") ;
d.show(123) ;
}
泛型接口:
public interface Inter<T>{
public abstract void show(T t );
实现接口:
1.知道实现接口时该用什么类型;
public Class InterImpl implements Inter<String> {
public void show(String t ) {
System.out.println(t) ;
}
}
public Class InterDemo{
public static void main (String[] args){
Inter<String> i = new InterImpl() ;
i.show("hello") ;
}
}
2.实现接口时不知道用什么类型;
public Class InterImpl<T> implements Inter<T>{
public void show(T t ) {
System.out.println(t) ;
}
}
public Class InterDemo{
public static void main (String[] args){
Inter<String> i = new InterImpl<String>() ;
i.show("hello") ;
Inter<Integer> i = new InterImpl<Integer>() ;
i.show(123) ;
}
}
通配符:
假如 d extends c, c entends b,b extends a .
Connection< A> c = new ArrayList<a>() ;
一般情况下: A与a必须一致(一样)
? :如果不一样,那么前面的A ,可以用用?代替
? extends E :
例如Collection<? extends b> c = new ArrayList<E> () ;
此时E 的位置上可以是 b,c,d,
? super E :
例如Collection<? super b> c = new ArrayList<E> () ;
此时E 的位置上可以是 b,a,