class Worker{
}
class Student2{
}
/*
* 泛型前做法
*/
class Tool{
private Object obj;
public void setObject(Object obj) {
this.obj = obj;
}
public Object getObject() {
return obj;
}
}
/*
* 泛型类
* 什么时候需要定义泛型类
* 当类中要操作的引用数据类型不确定的时候
* 早期定义Object来完成扩展
* 现在定义泛型来完成扩展
*/
class Utils<QQ>{
private QQ q;
public void setObject(QQ q) {
this.q =q;
}
public QQ getObject() {
return q;
}
}
public class GenericDemo2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Utils<Worker> u = new Utils<Worker>();
u.setObject(new Worker());
Worker w = u.getObject();
// Tool t = new Tool();
// t.setObject(new Worker());
// Worker w = (Worker)t.getObject();
}
}
--------------------------------------------------------------------------------------------------------------------------------------
//class Demo3<T>{
// public void show(T t) {
// System.out.println("show:"+t);
// }
// public void print(T t) {
// System.out.println("print:"+t);
// }
//}
/*
* 泛型类定义的泛型,在整个类中有效,如果被方法使用
* 那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了
*
* 为了让不同方法可以操作不同类型,而且类型还不确定
* 那么可以将泛型定义在方法上
*
* 特殊之处:
* 静态方法不可以访问类上定义的泛型
* 如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上
*/
//class Demo3{
// public <T> void show(T t){
// System.out.println("show:"+t);
// }
// public <Q> void print(Q q) {
// System.out.println("print:"+q);
// }
//}
class Demo3<T>{
public <T> void show(T t){
System.out.println("show:"+t);
}
public <Q> void print(Q q) {
System.out.println("print:"+q);
}
public static <W> void method(W w) {
System.out.println("method:"+w);
}
}
public class GenericDemo3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Demo3<String> d = new Demo3<String>();
d.show("haha");
d.show(4);
d.print(5);
d.print("heihei");
Demo3.method("hello");
//------------------------------------------------------
// Demo3 d = new Demo3();
// d.show("haha");
// d.show(new Integer(4));
// d.print("heihei");
/* ----------------------------------------------------
// Demo3<Integer> d = new Demo3<Integer>();
//
// d.show(new Integer(4));
// d.print(6);
// Demo3<String> d = new Demo3<String>();
// d.show("haha");
// d.print("hehe");
*/
}
}