只要在使用类或者接口时,该类或者接口在API文当描述时都带着<>就需要在使用时,定义泛型。
其实,泛型无非就是通过<>定义了一个形式参数。专门用于接收具体的引用类型。在使用时,一定要传递对应的实际参数类型。
有了泛型类,省去了曾经的强转和类型转换异常的麻烦。
泛型定义在方法上- class Tool2<W>{
- public void show(W w){
- System.out.println("show:"+w.toString());
- }
- public void myprint(W w){
- System.out.println("myprint:"+a.toString());
- }
复制代码 主函数中创建该泛型类对象,并调用该泛型类中的方法
Tool2<String> t = new Tool2<String>();
t.show("abc");
t.show(new Integer(4));这儿会编译失败。因为只能是String类
t.myprint("haha");
t.myprint(new Integer(4));同上。
}而我对这个myprint方法,想要操作的类型是不确定的,但是不一定和调用该方法的对象指定的类型一致。
*这时 可以将泛型定义在方法上。
public <A> void myprint(A a){
System.out.println("myprint:"+a.toString());
}此时,上面的t.myprint(new Integer(4));就不会再编译报错了
另外,静态方法不能访问类上定义的泛型,如果需要泛型,该泛型只能定义在方法上。即如果void前没有 <Y> ,会编译失败的。
public static <Y> void method(Y w){
System.out.println("method:"+w);
}
|