为什么在静态泛型方法的返回类型之前需要类型参数

以下noGood方法会产生编译错误,因为它省略了紧接在返回类型之前的形式类型参数T。


public static T noGood(T t) {

  return t;

}

有人可以帮助我理解为什么静态泛型方法需要在返回类型之前具有类型参数吗?非静态方法不需要吗?


人到中年有点甜
浏览 181回答 3
3回答

扬帆大鱼

类型参数 ( T) 在您实例化类时声明。因此,实例方法不需要类型参数,因为它是由实例定义的。static另一方面,方法不属于实例——它们属于类。由于没有可以从中获取类型信息的实例,因此必须为方法本身指定它。

冉冉说

T没有定义。修饰符的顺序和返回类型保持不变。public static <T> T noGood(T t) {&nbsp; &nbsp; return t;}

潇潇雨雨

当您使用泛型时,您需要使用<>符号声明它们在一个班public class Foo<T, U, V>{}在方法中,在返回类型之前public static <T, U extends Number, V> T foo(T t) {&nbsp; &nbsp; U u = ..;&nbsp; &nbsp; ...}public static <T> int foo(T t) {&nbsp; &nbsp; ...}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java