这似乎是有效的Java语法:
<T> T get();
但是这是什么意思?有用吗?
下载澄清
我了解在方法参数中使用
T
时的含义,如下所示:T get(Class<T> clazz);
返回类型可以从传入的类中推断出来。
但是,当您没有参数来说明T是什么类型时,它是什么类型?
最佳答案
这意味着该语言具有一组旨在尽可能简单的规则,并且在这里它们以不太有用的方式组合在一起。
通用方法具有类型参数。可以在方法主体的参数列表中的返回类型中使用类型参数。可以将它们组合使用,包括根本不使用。
例如,这些签名都可以是有用的:
<T> T foo( T t ) // The return type can be the type parameter
<T> List<T> ( ) // A type parameter does not have to be an argument
<T> T get()
的情况使用相同的规则,但组合不同。不是特别。您尚未显示实现。 @LouisWasserman在有深刻见解的注释中指出,实现要么必须抛出,返回null要么被黑。
这是一个示例黑客。我认为这没有用,因为有一种更简单的方法可以完成此操作。如果您要从C转换为Java,并希望代码尽可能保持并行,那可能会很有用。
public static class Union {
public Object o;
public Union( Object value ) { o = value; }
public Class<? extends Object> getType() { return o.getClass(); }
public <T> T value() {
return (T) o; // <-- uses type parameter to cast
}
}
public static void main(String[] args) {
Union union = new Union( "foo" );
Class<?> valueType = union.getType();
if ( valueType.equals( String.class )) {
String s = union.value(); // <-- the call
System.out.println( s );
}
}
关于java - "<T> T get()"是什么意思? (有用吗?),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36363078/