use*_*253 5 java generics interface class
public interface Parent{
}
public class Child implements Parent{
}
public <T extends Parent> Class<T> getClass(){
return Child.class; // compile error, add cast to Class<T>
}
Run Code Online (Sandbox Code Playgroud)
我希望上面的代码没有错误,但是当我返回Child.class时出现编译错误.
Child.class无论如何,你都不能告诉Java总是返回T.可能有其他类从父级扩展而不是a Child.此外,由于您没有T在任何地方使用,因此您的代码没有多大意义.两种可能的解决方
public Class<? extends Parent> getAClass() {
return Child.class;
}
Run Code Online (Sandbox Code Playgroud)
也许
public <T extends Parent> Class<T> getAClass(Class<T> clazz){
return clazz;
}
Run Code Online (Sandbox Code Playgroud)
第二个例子编译,但如果T在类级别声明,可能会更有意义.
此外,我重命名了您的方法,以避免与现有getClass()方法发生名称冲突.
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |