package yuwei.com;
import java.util.ArrayList;
import java.util.Collection;
class objectToAny{
//泛型构造
public <T>objectToAny(T a){
System.out.println(a);
}
//定义泛型方法
public <T>void test(T[] oj,Collection<T> c){
for(T o:oj) {
c.add(o);
}
System.out.println("------------------");
System.out.println(c);
}
public objectToAny() {
super();
// TODO Auto-generated constructor stub
}
public <T>void test1(Collection<T> to,Collection<? extends T> from) {
for(T recieve:from) {//向to集合里添加T的任意子类(Number,Integer)
to.add(recieve);
}
System.out.println("------------------");
System.out.println(to);
}
public <T> T test2(Collection<T> from,Collection<? super T> to) {//(Integer,Number)
T last = null;
for(T recieve:from) {//向to集合里添加T的任意子类
last = recieve;
to.add(recieve);
}
System.out.println("------------------");
System.out.println(to);
return last;
}
}
public class TestDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
objectToAny t = new objectToAny("NAME");
Object[] o = new Object[10];
Collection<Object> c= new ArrayList<>();
t.test(o, c);
String[] s = new String[10];
Collection<String> cs= new ArrayList<>();
t.test(s, cs);
Collection<Object> from = new ArrayList<>();
Collection<Object> to = new ArrayList<>();
from.add(new String("aaa"));
from.add("5");
from.add(20);
t.test1(to, from);
Collection<Integer> from1 = new ArrayList<>();
from1.add(1);
from1.add(2);
from1.add(3);
from1.add(4);
Collection<Number> to1 = new ArrayList<>();
t.test1(to1, from1);
//当需要返回一个值时需要用到下面方法
//由于返回的类型为Integer类型,而T是Number类型,导致出错如果继续使用test1()函数
Integer a = t.test2(from1, to1);
System.out.println(a);
}
}
以上来自java疯狂讲义自学笔记