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 的结果,其中 RT 不需要彼此区分开来。

调用 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 );