如何解决:使用 T 本身时,参数从不与 T 类型一起使用?

How to resolve: parameter never used with T type while T itself is used?

我在使用参数类型 (T) 而不是参数值本身的通用方法中遇到 Java 警告(“从未使用过参数 myParameter”)。我可以不使用 SuppressWarnings 注释来避免此警告吗?

private <T extends MyInterface> MyGenericObject<T> init(Class<T> myParameter) {
   // lots of common code here ... and:
   return new MyGenericObject<T>();
}

目前我使用这个方法的方式:

MyGenericObject<MyClassA> aInstance = init(MyClassA.class);
MyGenericObject<MyClassB> bInstance = init(MyClassB.class);

也许必须有一种方法可以只将类型不带参数传递给我的方法,但我找不到方法。你能帮我解决一下吗?

where I use type of the parameter (T)

但你不需要myParameter为你提供T。没有它它也能正常工作:

private <T extends MyInterface> MyGenericObject<T> init() {
   // lots of common code here ... and:
   return new MyGenericObject<T>();
}

// and invoke like:
MyGenericObject<MyClassA> aInstance = init();
MyGenericObject<MyClassB> bInstance = init();

类型参数并不是您真正使用的“东西”。这只是编译器的一条指令,以确保所有引用 T 的类型都是兼容的。