标签:
publicclassContainer<K, V>{
private K key;
private V value;
publicContainer(K k, V v){
key = k;
value = v;
}
public K getKey(){
return key;
}
publicvoid setKey(K key){
this.key = key;
}
public V getValue(){
return value;
}
publicvoid setValue(V value){
this.value = value;
}
}
publicclass A extends Apple<T> //错误
publicclass A extends Apple<String>//正确,把Apple<T>中的T当作String处理
publicclass A extends Apple //可以,但泛型检查有警告:未检查或不安全的操作,Apple<T>中的T当作Object处理
interface Info<T>{ // 在接口上定义泛型
public T getVar();// 定义抽象方法,抽象方法的返回值就是泛型类型
}
classInfoImpl<T> implements Info<T>{ // 定义泛型接口的子类
private T var ; // 定义属性
publicInfoImpl(T var){ // 通过构造方法设置属性内容
this.setVar(var);
}
publicvoid setVar(T var){
this.var = var ;
}
public T getVar(){
returnthis.var ;
}
};
publicclassGenericsDemo24{
publicstaticvoid main(String arsg[]){
Info<String> i = null; // 声明接口对象
i =newInfoImpl<String>("李兴华");// 通过子类实例化对象
System.out.println("内容:"+ i.getVar());
}
};
interface Info<T>{ // 在接口上定义泛型
public T getVar();// 定义抽象方法,抽象方法的返回值就是泛型类型
}
classInfoImpl implements Info<String>{ // 定义泛型接口的子类
privateString var ; // 定义属性
publicInfoImpl(String var){ // 通过构造方法设置属性内容
this.setVar(var);
}
publicvoid setVar(String var){
this.var = var ;
}
publicString getVar(){
returnthis.var ;
}
};
publicclassGenericsDemo25{
publicstaticvoid main(String arsg[]){
Info i = null; // 声明接口对象
i =newInfoImpl("李兴华"); // 通过子类实例化对象
System.out.println("内容:"+ i.getVar());
}
};
classDemo{
public<T> T fun(T t){ // 可以接收任意类型的数据
return t ; // 直接把参数返回
}
};
publicclassGenericsDemo26{
publicstaticvoid main(String args[]){
Demo d =newDemo(); // 实例化Demo对象
String str = d.fun("李兴华");// 传递字符串
int i = d.fun(30); // 传递数字,自动装箱
System.out.println(str); // 输出内容
System.out.println(i); // 输出内容
}
};
publicclassGenericsDemo30{
publicstaticvoid main(String args[]){
Integer i[]= fun1(1,2,3,4,5,6); // 返回泛型数组
fun2(i);
}
publicstatic<T> T[] fun1(T...arg){ // 接收可变参数
return arg ; // 返回泛型数组
}
publicstatic<T>void fun2(T param[]){ // 输出
System.out.print("接收泛型数组:");
for(T t:param){
System.out.print(t +"、");
}
}
};
Class c1 =newArrayList<Integer>().getClass();
Class c2 =newArrayList<String>().getClass();
System.out.println(c1 == c2);
/* Output
true
*/
publicclassMain<T>{
public T[] makeArray(){
// error: Type parameter ‘T‘ cannot be instantiated directly
returnnew T[5];
}
}
publicclassMain<T>{
public T[] create(Class<T> type){
return(T[])Array.newInstance(type,10);
}
publicstaticvoid main(String[] args){
Main<String> m =newMain<String>();
String[] strings = m.create(String.class);
}
}
publicvoid inspect(List<Object>list){
for(Object obj :list){
System.out.println(obj);
}
list.add(1);//这个操作在当前方法的上下文是合法的。
}
publicvoid test(){
List<String> strs =newArrayList<String>();
inspect(strs);//编译错误
}
标签:
原文地址:http://www.cnblogs.com/Doing-what-I-love/p/5664472.html