1 package cn.itcast.p4.generic.define.demo; 2 3 public class GenericDemo4 { 4 5 public static void main(String[] args) { 6 // TODO Auto-generated method stub 7 Tool<String> tool = new Tool<String>(); 8 9 tool.show("abc"); 10 tool.print("hahah"); 11 12 // tool.show(new Integer(4));//类型检查没过去 13 Tool.method("haha"); 14 tool.method(new Integer(6)); 15 } 16 17 }GenericDefineDemo4
1 package cn.itcast.p4.generic.define.demo; 2 //定义一个工具类操作所有对象 3 /* 4 * public class Tool { private Object object; 5 * 6 * public Object getObject() { return object; } 7 * 8 * public void setObject(Object object) { this.object = object; } 9 * 10 * } 11 */ 12 //在jdk1.5后,使用泛型来接收类中要操作的引用数据类型。 13 //泛型类。什么时候用?当类中的操作的引用数据类型不确定的时候,就使用泛型来表示。 14 public class Tool<QQ>{ 15 private QQ q; 16 17 public QQ getObject() { 18 return q; 19 } 20 21 public void setObject(QQ object) { 22 this.q = object; 23 } 24 /** 25 * 将泛型定义在方法上 26 * @param <W> 27 * @param str 28 */ 29 public <W> void show(/*Object*/W str) {//不明确类型用Object其实是一种具体类型,只不过他是父类所以可以多态方式接收 30 System.out.println("show:"+str.toString()); 31 } 32 public void print(QQ str) {//一旦使用了泛型,对象不确定,你不能使用对象的具体方法。无论传什么都具备Object的方法 33 System.out.println("print:"+str); 34 } 35 /** 36 * 当方法静态时,不能访问类上定义的泛型。如果静态方法使用泛型, 37 * 只能将泛型定义在方法上。(返回值前修饰符后) 38 * @param obj 39 */ 40 // public static void method(QQ obj) {//加了static 静态是不需要对象的,泛型需要对象明确,就不知道QQ怎么用 41 // System.out.println("method:"+obj); 42 // } 43 public static <Y> void method(Y obj) { 44 System.out.println("method:"+obj); 45 } 46 }Tool