为什么泛型静态方法有返回类型,而实例方法没有?
public class Main<T> {
public static <T> T met(T t) {
return t;
}
public T met1(T t) {
return t;
}
}
最佳答案
实例方法还可以在返回类型前面定义泛型类型参数 ( <T>
),但这不是必须的,因为它可以使用已在类级别中定义的泛型类型参数 ( public class Main<T>
)。
另一方面,静态方法不能使用在类级别定义的泛型类型参数,因此它必须声明它打算使用的任何泛型类型参数。
即以下两项均有效
public static <T> T met(T t) {
return t;
}
public <T> T met1(T t) {
return t;
}
另一方面,在下面
public static T met(T t) {
return t;
}
T
被假定为类型标识符(即某个类或接口(interface)的名称),而不是泛型类型参数。
关于java - 为什么静态泛型方法的返回类型前面应该有<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45657568/