英文:
How to resolve: parameter never used with T type while T itself is used?
问题
以下是翻译好的内容:
我遇到了一个Java警告("Parameter myParameter is never used"),它出现在我的通用方法中,我在这个方法中使用了参数的类型(T),但没有使用参数值本身。我能否在不使用SuppressWarnings注解的情况下避免这个警告?
private <T extends MyInterface> MyGenericObject<T> init(Class<T> myParameter) {
// 很多共同的代码在这里... 还有:
return new MyGenericObject<T>();
}
我目前使用这个方法的方式:
MyGenericObject<MyClassA> aInstance = init(MyClassA.class);
MyGenericObject<MyClassB> bInstance = init(MyClassB.class);
也许有一种方法可以只传递类型而不是参数给我的方法,但我找不到这样的方法。你能帮我解决这个问题吗?
英文:
I am facing with a Java Warning ("Parameter myParameter is never used") on my generic method where I use type of the parameter (T) but not the parameter value itself. Can I avoid this warning without using SuppressWarnings annotation?
private <T extends MyInterface> MyGenericObject<T> init(Class<T> myParameter) {
// lots of common code here ... and:
return new MyGenericObject<T>();
}
The way I use this method at the moment:
MyGenericObject<MyClassA> aInstance = init(MyClassA.class);
MyGenericObject<MyClassB> bInstance = init(MyClassB.class);
Perhaps there must be a way to pass only the type to my method without parameter, but I cannot find the way for it. Could you please help me out with that?
答案1
得分: 1
> 在我使用参数(T)的类型
但是你不需要`myParameter`来提供给你`T`。它将在没有它的情况下以一般方式工作:
```java
private <T extends MyInterface> MyGenericObject<T> init() {
// 大量的通用代码在这里 ... 并且:
return new MyGenericObject<T>();
}
// 并且像这样调用:
MyGenericObject<MyClassA> aInstance = init();
MyGenericObject<MyClassB> bInstance = init();
类型参数实际上并不是你使用的一个“东西”。它只是给编译器的指令,确保所有引用T
的类型是兼容的。
<details>
<summary>英文:</summary>
> where I use type of the parameter (T)
But you don't need `myParameter` to provide you with `T`. It will work generically without it:
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();
A type parameter isn't really a "thing" you use. It's just an instruction to the compiler to make sure that all of the types which refer to `T` are compatible.
</details>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论