arz*_*llo 5 java generics types return class
想象一下有一个java类
public class FixedClassOfStrings {
List<String> myMember=new ArrayList<String>();
// omissed all non relevant code...
public Class getMyType() {
return String.class;
}
}
Run Code Online (Sandbox Code Playgroud)
如何通过使用 java 泛型使其参数化?
我的尝试失败了:
public class GenericClass<T> {
List<T> myMember=new ArrayList<T>();
public Class getMyType() {
return T.class; // this gives "Illegal class literal for the type parameter T"
}
}
Run Code Online (Sandbox Code Playgroud)
另外,如何避免在 FixedClassOsStrings 中发出警告:“类是原始类型。对泛型类的引用应该参数化”?可以声明:
public Class<String> getMyType() {
return String.class;
}
...
Run Code Online (Sandbox Code Playgroud)
如果没问题,我应该使用泛型返回什么?
public Class<T> getMyType() {
return T.class; // this gives "Illegal class literal for the type parameter T"
}
...
Run Code Online (Sandbox Code Playgroud)
所有提示将不胜感激!!!
我会尝试这样的事情:
public Class<T> getMyType() {
return /* some instance of T */.getClass();
}
Run Code Online (Sandbox Code Playgroud)
或者,一个简单的解决方案是在构造时传递实例:
public class YourClass<T> {
private final Class<T> type;
public YourClass (/* arguments */, Class<T> type) {
this.type = type;
}
public Class<T> getType() {
return this.type;
}
}
Run Code Online (Sandbox Code Playgroud)