[英]How to call static method from a generic class?
我有一個包含靜態創建方法的類。
public class TestClass {
public static <E> TestClass<E> create() {
return new TestClass<E>();
}
}
當我使用TestClass.create()
,可以對其進行編譯。 但是,當我使用TestClass<String>.create()
,它無法編譯,如何指定泛型?
假設您要詢問在類型推斷失敗的情況下顯式指定類型,則可以使用TestClass.<String>create()
(注意,類型在.
之后而不是之前)。
是的,這很……不直觀。
喬什·布洛赫(Josh Bloch)在他的《有效的Java,第二版》的演示文稿中的一個旁注關於這個問題: “每次您指定顯式類型參數時,上帝都會殺死一只小貓” 。 我想避免這樣的構造,但有時不能回避。
訣竅是在后面指定通用參數.
字符: TestClass.<String>create()
。
泛型可以在類聲明中指定:
public class TestClass<E> {
public static <E> TestClass<E> create() {
return new TestClass<E>();
}
}
// Elsewhere in the code
TestClass<String> testClass = TestClass.create();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.