如何从generics类中调用静态方法?

我有一个包含静态创建方法的类。

public class TestClass { public static  TestClass create() { return new TestClass(); } } 

当我使用TestClass.create() ,它可以被编译。 但是当我使用TestClass.create() ,它无法编译,如何指定generics?

假设您要求在类型推断失败的情况下明确指定类型,可以使用TestClass.create() (注意类型在.之后的类型,而不是之前)。

是的,那很漂亮……不直观。

Josh Bloch关于这个问题的有效Java第二版的演讲旁注: “每当你指定一个明确的类型参数时,上帝会杀死一只小猫” 。 我想避免像这样的结构,但有时它不能回避。

诀窍是在之后指定generics参数. character: TestClass.create()

可以在类声明中指定generics类型:

 public class TestClass { public static  TestClass create() { return new TestClass(); } } // Elsewhere in the code TestClass testClass = TestClass.create();