异常的通用语法:数组。asList(...)

异常的通用语法:数组。asList(...),第1张

异常的通用语法:数组。asList(...)

<typearg>methodname
是用于显式指定泛型方法的类型参数的语法

使用泛型类时,通常必须指定type参数(例如

String
):

ArrayList<String> list =  new ArrayList<String>();

使用泛型方法时,通常不会传递类型参数:

public static <T> void foo(T param) {   }...String s = ...;MyClass.foo(s);

您会注意到,没有代码在哪里明确指定我们想要的

String
版本
foo
,即没有
<String>
像使用通用类(
List<String>
)时那样指定明确的类型实参。

编译器正在做一些编译器魔术,以根据上下文推断泛型类型参数。这是一件伟大的事情,非常强大。

但是,有时编译器无法自动推断类型参数:

public static <T> void bar() { T myLocalVar = ...; ...  }MyClass.bar();

bar
我们尝试调用什么具体的版本,即此调用的类型参数是什么?不知道?好吧,编译器也没有。我们必须明确声明类型参数,就像我们通常使用泛型类时那样:

MyClass.<String>bar();

另请参阅:

  • http://www.angelikalanger.com/GenericsFAQ/FAQSections/ParameterizedMethods.html#FAQ002
  • 那里还有许多其他好东西 http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html

除了: 值得一提的是,Java 7将添加所谓的菱形运算符,以使我们现在也可以让编译器在使用泛型类时推断类型参数:

ArrayList<String> list =  new ArrayList<String>();

变成

ArrayList<String> list =  new ArrayList<>();

Java 7中的菱形运算符(<>)有什么意义?



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5095497.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-16
下一篇2022-11-16

发表评论

登录后才能评论

评论列表(0条)

    保存