簡體   English   中英

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 也有類似的結構,但名稱“菱形運算符”是保留的(好吧,不是真正的“保留”,而是使用)用於稍有不同的東西。

在構造

final List<String> stringList = new ArrayList<>();

<>被稱為“菱形運算符”(盡管“菱形形式”更正確),它是其他必需術語<String>的快捷方式。

在 Java 中定義具有泛型參數或返回類型的方法看起來與 C# 略有不同:

public final <T,R> R doSomething( final T argument ) { … }

doSomething()接受T類型的參數並返回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 );

是的。 這些菱形運算符稱為泛型。 Java也有!

它們使用相同的 <> 語法。 您可以通過搜索“java泛型”在線找到更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM