簡體   English   中英

如何從泛型類調用靜態方法?

[英]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.

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