java中方法返回值前的的作用
方法返回值前的<T>的左右是告诉编译器,当前的方法的值传入类型可以和类初始化的泛型类不同,也就是该方法的泛型类可以自定义,不需要跟类初始化的泛型类相同
我们通过一段代码比较来看下就明白了
class Show<T> {
public void print1(T t) {
System.out.println(t);
}
public <T> void print2(T t) {
System.out.println(t);
}
}
public class Demo {
public static void main(String[] args) {
Show<String> show = new Show<String>();
show.print1(new Integer(1));// 不能编译
show.print2(new Integer(1));// 可以编译
}
}
源码分析
- Show类定义了泛型T,它有两个print方法,两个方法只有一点差别,print2有<T>,而print1没有。
- Demo类实例化Show类,并将泛型类型定义为String类型,却为两个print方法传入Integer类型的对象。print2可以编译,而print1不可编译。
- print1中的泛型与show对象的泛型相同,都是String,因此不能传入Integer类型的参数。而print2方法自定义了一个泛型T,因此方法参数类型不受对象泛型类型限制,这样定义的话这个方法是可以传入任意类型的参数的。