如何从泛型类调用静态方法?

Ada*_*Lee 1 java generics

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

public class TestClass {

 public static <E> TestClass<E> create() {
    return new TestClass<E>();
  }

}
Run Code Online (Sandbox Code Playgroud)

当我使用时TestClass.create(),它可以编译.但是当我使用时TestClass<String>.create(),它无法编译,如何指定泛型?

San*_*rma 10

假设您要求在类型推断失败的情况下明确指定类型,您可以使用TestClass.<String>create()(注意类型之后的类型.与之前相反).

  • 语法对我来说并不违反直觉.泛型参数是方法签名的一部分,而不是类签名.因此应该在点之后.请注意,在大多数情况下,可以推断出通用类型,并且此显式类型信息是多余的,就像`List <String> strings = Collections.emptyList();` (5认同)
  • @M Platvoet:这是违反直觉的,因为类型参数位于点之后,而不是方法名称. (2认同)