package cn.itcast.p4.generic.define.demo;
public class Tool {
private Object object;
public Object getObject() {
return object;
}
public void setObject(Object object) {
this.object = object;
}
}
*/
//在jdk1.5后,使用泛型来接收类中要操作的引用数据类型。
//泛型类。什么时候用?当类中的操作的引用数据类型不确定的时候,就使用泛型来表示。
public class Tool{
private QQ q;
public QQ getObject() {
return q;
}
public void setObject(QQ object) {
this.q = object;
}
/**
* 将泛型定义在方法上。
* @param str
*/
publicvoid show(W str){
System.out.println("show : "+str.toString());
}
public void print(QQ str){
System.out.println("print : "+str);
}
/**
* 当方法静态时,不能访问类上定义的泛型。如果静态方法使用泛型,
* 只能将泛型定义在方法上。
* @param obj
*/
public staticvoid method(Y obj){
System.out.println("method:"+obj);
}
}
泛型演示:
示例1:
package cn.itcast.p5.generic.advance.demo;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import cn.itcast.p2.bean.Person;
import cn.itcast.p2.bean.Student;
159
import cn.itcast.p2.bean.Worker;
public class GenericAdvanceDemo2 {
/**
* @param args
*/
public static void main(String[] args) {
ArrayListal = new ArrayList();
al.add(new Person("abc",30));
al.add(new Person("abc4",34));
ArrayListal2 = new ArrayList();
al2.add(new Student("stu1",11));
al2.add(new Student("stu2",22));
ArrayListal3 = new ArrayList();
al3.add("stu3331");
al3.add("stu33332");
printCollection(al2);
printCollection(al);
}
/**
* 迭代并打印集合中元素。
*
* 可以对类型进行限定:
* ? extends E:接收E类型或者E的子类型对象。上限!
*
* ? super E :接收E类型或者E的父类型。下限!
* @param al
*/
/*public static void printCollection(Collection al)
{//Collectional = new ArrayList()
Iterator it = al.iterator();
while(it.hasNext()){
// T str = it.next();
// System.out.println(str);
// System.out.println(it.next().toString());
Person p = it.next();
System.out.println(p.getName()+":"+p.getAge());
}
}*/
public static void printCollection(Collection al){
Iterator it = al.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
示例2(存储用上限):
package cn.itcast.p5.generic.advance.demo;
import java.util.ArrayList;
import cn.itcast.p2.bean.Person;
import cn.itcast.p2.bean.Student;
import cn.itcast.p2.bean.Worker;
public class GenericAdvanceDemo3 {
public static void main(String[] args) {
ArrayListal1 = new ArrayList();
al1.add(new Person("abc", 30));
al1.add(new Person("abc4", 34));
ArrayListal2 = new ArrayList();
al2.add(new Student("stu1", 11));
al2.add(new Student("stu2", 22));
ArrayListal3 = new ArrayList();
al3.add(new Worker("stu1", 11));
al3.add(new Worker("stu2", 22));
ArrayListal4 = new ArrayList();
al4.add("abcdeef");