Unity 專案經常使用 C# 函式,這些函式在方法名稱后的菱形運算子中提供型別。在 Unity 源代碼中,它是這樣定義的:
public static T FindObjectOfType<T>() where T : Object
{
return (T)FindObjectOfType(typeof(T), false);
}
它的使用示例:
CanvasRenderer canvas = FindObjectOfType<CanvasRenderer>();
我的問題是,Java 語言有類似的結構嗎?
uj5u.com熱心網友回復:
Java 也有類似的結構,但名稱“菱形運算子”是保留的(好吧,不是真正的“保留”,而是使用)用于稍有不同的東西。
在構造
final List<String> stringList = new ArrayList<>();
被<>稱為“菱形運算子”(盡管“菱形形式”會更正確),它是其他所需術語的快捷方式<String>。
在 Java 中定義具有泛型引數或回傳型別的方法看起來與 C# 略有不同:
public final <T,R> R doSomething( final T argument ) { … }
doSomething()接受 type 的引數T并回傳 type 的結果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 );
uj5u.com熱心網友回復:
是的。這些菱形運算子稱為泛型。Java也有!
它們使用相同的 <> 語法。您可以通過搜索“java泛型”在線找到更多資訊
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/474118.html
上一篇:Flutter泛型函式回呼
