泛型类定义的泛型,在整个类中有效。如果被方法是用,那么
泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了。为了让不同的方法可以操作不同类型,而且类型还不确定。那么
可以将泛型定义在方法上。泛型类
class Demo{ public void show(T t) { System.out.println("show: "+t); } public void print(T t) { System.out.println("show: "+t); } }
class GenericDemo4{ public static void main(String[] args) { Demod = new Demo (); d.show(new Integer(4)); Demo d1 = new Demo (); d1.print("haha"); } }
结果:
show: 4 show: haha泛型方法
class Demo{ publicvoid show(T t) { System.out.println("show: "+t); } public void print(Q q) { System.out.println("print:"+q); } }
class GenericDemo4{ public static void main(String[] args) { Demo d = new Demo(); d.show("hello boy!"); d.print("Alex i love you !"); } }
结果:
show: hello boy! print:Alex i love you !同时定义泛型类和泛型方法
class Demo{ public void show(T t) { System.out.println("show: "+t); } public void print(Q q) { System.out.println("print:"+q); } } class GenericDemo4 { public static void main(String[] args) { Demod = new Demo (); d.show("hello boy!"); d.print("Alex i love you !"); d.print(5); d.print("heiei"); } }
结果:
show: hello boy! print:Alex i love you ! print:5 print:heiei特殊之处:
静态方法不可以访问类上定义的泛型 如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。class Demo{ public void show(T t) { System.out.println("show: "+t); } public void print(Q q) { System.out.println("print:"+q); } public staticvoid method(W t) { System.out.println("method: "+t); } } class GenericDemo4 { public static void main(String[] args) { Demo d = new Demo (); d.show("hello boy!"); d.print("Alex i love you !"); d.print(5); d.print("heiei"); Demo.method("hihi"); } }
结果:
show: hello boy! print:Alex i love you ! print:5 print:heiei method: hihi泛型定义在接口上
interface Inter{ void show(T t); } //第一种 class InterImpl implements Inter { public void show(String t) { System.out.println("show :"+t); } } /*第二种 class InterImpl implements Inter { public void show(T t) { System.out.println("show :"+t); } } */ class GenericDemo5 { public static void main(String[] args) { /* InterImpl i = new InterImpl (); i.show(4); */ InterImpl i = new InterImpl(); i.show("haha"); } }
结果:
show :haha 第一种相对来说就比较死,固定为String类型了。而第二种可以自己定义。