Java 是否具有 C# 具有的类似 post 方法菱形运算符?
Does Java have a similar post method diamond operator that C# has?
Unity 项目经常使用在方法名称后的菱形运算符中提供类型的 C# 函数。在Unity源码中是这样定义的:
public static T FindObjectOfType<T>() where T : Object
{
return (T)FindObjectOfType(typeof(T), false);
}
使用示例:
CanvasRenderer canvas = FindObjectOfType<CanvasRenderer>();
我的问题是,Java 语言是否有类似的构造?
是的。这些菱形运算符称为泛型。 Java 也有!
它们使用相同的 <> 语法。您可以通过搜索“java generics”
在线查找更多信息
Java 具有类似的构造,但名称“钻石运算符”是保留的(好吧,不是真的 'reserved',而是使用)用于稍微不同的东西。
构造中
final List<String> stringList = new ArrayList<>();
<>
被称为“钻石运算符”(尽管“钻石形式”会更正确),它是另一个要求的术语 <String>
.[=24= 的缩写]
使用通用参数或 return 类型定义方法在 Java 中看起来与 C# 略有不同:
public final <T,R> R doSomething( final T argument ) { … }
doSomething()
接受类型 T
的参数和 return 类型 R
的结果,其中 R
和 T
不需要彼此区分开来。
调用 doSomething()
可能如下所示:
final var date = LocalDate.now();
final String result = doSomething( date );
您的 C# 方法 FindObjectOfType<T>()
将在 Java 中声明如下:
public final <T> T findObjectOfType( final Class<T> desiredType ) { … }
它会这样称呼:
CanvasRenderer canvas = findObjectOfType( CanvasRenderer.class );
Unity 项目经常使用在方法名称后的菱形运算符中提供类型的 C# 函数。在Unity源码中是这样定义的:
public static T FindObjectOfType<T>() where T : Object
{
return (T)FindObjectOfType(typeof(T), false);
}
使用示例:
CanvasRenderer canvas = FindObjectOfType<CanvasRenderer>();
我的问题是,Java 语言是否有类似的构造?
是的。这些菱形运算符称为泛型。 Java 也有!
它们使用相同的 <> 语法。您可以通过搜索“java generics”
在线查找更多信息Java 具有类似的构造,但名称“钻石运算符”是保留的(好吧,不是真的 'reserved',而是使用)用于稍微不同的东西。
构造中
final List<String> stringList = new ArrayList<>();
<>
被称为“钻石运算符”(尽管“钻石形式”会更正确),它是另一个要求的术语 <String>
.[=24= 的缩写]
使用通用参数或 return 类型定义方法在 Java 中看起来与 C# 略有不同:
public final <T,R> R doSomething( final T argument ) { … }
doSomething()
接受类型 T
的参数和 return 类型 R
的结果,其中 R
和 T
不需要彼此区分开来。
调用 doSomething()
可能如下所示:
final var date = LocalDate.now();
final String result = doSomething( date );
您的 C# 方法 FindObjectOfType<T>()
将在 Java 中声明如下:
public final <T> T findObjectOfType( final Class<T> desiredType ) { … }
它会这样称呼:
CanvasRenderer canvas = findObjectOfType( CanvasRenderer.class );