曼城官方合作伙伴开云官宣

3年前 (2023-04-28)

使用泛型类时,通常必须指定type参数(例如String): 同题参见

ArrayList list = new ArrayList ;

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

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

您会注意到,没有代码在哪里明确指定我们想要的String版本foo,即没有像使用通用类(List)时那样指定明确的类型实参。 对照阅读

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

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

public static  void bar { T myLocalVar = ...; ... }
MyClass.bar ;

bar我们尝试调用曼城官方合作伙伴开云官宣具体的版本,即此调用的类型参数是曼城官方合作伙伴开云官宣?不知道?好吧,编译器也没有。我们必须明确声明类型参数,就像我们通常使用泛型类时那样:

MyClass.bar ;

另请参阅:

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

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

ArrayList list = new ArrayList ;

变成

ArrayList list = new ArrayList<> ;

Java 7中的菱形运算符(<>)有曼城官方合作伙伴开云官宣意义?

解决方法

我发现了“不寻常”的通用语法,例如:

Arrays.asList(...);
Collections.emptyList ;

显然,这些方法的结果是通用的。这样的语法用于类型检查吗?一个Object阵列不能为一个参数Arrays.asList(...)

你可能想看:

标签:string通用

继续阅读

若需了解「曼城官方合作伙伴开云官宣」的上下文,可结合站内栏目与相关篇目交叉阅读。

栏目用于追新,文内链接用于对照细节。两者配合可减少漏读与重复检索。

继续浏览时优先选择同栏目或相近主题,避免被站外镜像带偏。

站点导览

string · wiki · 科技 · 文化

页面按栏目组织。可先看导读,再进入相关篇目或返回列表。