java“<T>T get()”是什么意思?(它有用吗?)
这似乎是有效的Java语法:
<T> T get();
但这意味着什么?它有用吗
对下层选民的澄清
我理解在方法参数中使用T
时的含义,比如:
T get(Class<T> clazz);
返回类型可以从传入的类中推断出来
但当你没有参数来说明T是什么类型时,它是什么类型
你可以在下面搜索框中键入要查询的问题!
这似乎是有效的Java语法:
<T> T get();
但这意味着什么?它有用吗
对下层选民的澄清
我理解在方法参数中使用T
时的含义,比如:
T get(Class<T> clazz);
返回类型可以从传入的类中推断出来
但当你没有参数来说明T是什么类型时,它是什么类型
# 1 楼答案
这意味着该语言有一套尽可能简单的规则,在这里,它们以一种不太有用的方式结合在一起
泛型方法具有类型参数。类型参数可以在返回类型、参数列表和方法体中使用。它可以用于任何组合,包括完全不使用
例如,这些签名可能都很有用:
<T> T get()
的情况使用相同的规则,但组合方式不同不特别。您还没有展示一个实现@LouisWasserman在一篇有见地的评论中指出,一个实现要么必须抛出、返回null,要么就是一个黑客
下面是一个黑客的例子。我不认为它有用,因为有一种更简单的方法来实现这一点。em>也许如果您正在从C转换到Java,并且希望代码尽可能保持并行,那么它将非常有用
# 2 楼答案
它是您将返回值赋给的变量的类型
例如。 如果你有这样的方法:
例如,您可以将方法的返回值直接分配给一个双精度值,而无需强制转换:
因此,您基本上已经将强制转换从变量声明移到了方法中
这有潜在的危险,因为您可以很容易地生成强制转换异常,因为您可以这样做,并且仍然能够编译:
# 3 楼答案
这意味着一切都是真的。下面的代码将编译,带有警告,然后是barf。如果不声明/推断某个时刻的类型,就没有很好的理由键入该方法
更明确地说,这并不比这样做更好(除非你可能只需要在一个地方施展)