//方法泛型
public class Tool{
private Q q;
public Q getObj(){
return q;
}
public void setObj(Q q){
this.q=q;
}
public
System.out.println(t); //该程序中,类泛型是Q,方法泛型如果不写的话默认是Q,声明的话可以是别的泛型
}
public static void print(Q q){} //会报错,静态方法,不能与类的泛型一致,因为静态方法是在类加载的时候加载,是在创建对象之前创建的,而类泛型是在创建对象的时候才 //能知道具体的类型
public static
System.out.println(w);
} //不会报错,方法声明了自己的泛型,就拥有了自己的泛型
}
//接口泛型
public class Main{
public static void main(String[] args){
}
}
interface Inter
public void show(T,t);
}
//第一种方式:
class Demo implements Inter
@Override
public void show(String t){
System.out.println(t);
}
}
//第二种方式:
class Demo
@Override
public void show(T t){
System.out.println(t);
}
}
//泛型高级之通配符
public class Demo_Generic{
/**
* A:泛型通配符 //相当于斗地主中的癞子,可以替换任意一张牌
*任意类型,如果没有明确,那么就是Object以及任意的JAVA类了
*B:?extends E 向下限定,E及其子类(?是子类,E是父类)
*C:?super E 向上限定,E及其父类
*/
public static void main(String[] args){
List list=new ArrayList
ArrayList
list1.add(new Person("张三",23));
list1.add(new Person("李四",24));
list1.add(new Person("王五",25));
ArrayList
list2.add(new Stuent("赵六",26));
list2.add(new Stuent("周七",27));
//Student类是继承了Person类的
list1.addAll(list2); //在addAll的API中可以将list1中添加的类型或者list1的类型的子类型,可以将子类对象添加到父类中
System.out.println(list1);
list2.addAll(list1); //不可以将父类对象添加到子类中
}
}