有一个接口:
public interface InterfaceX {
void methodX();
}
具有接收实现该接口的对象的方法的类:
public class AClass {
public <T extends InterfaceX> void Method( Class<T> argument ) {
// ....
}
}
和一个实现接口并希望调用上述方法的类。
public class BClass implements InterfaceX {
@Override
public void methodX() {
}
public void callAClassMethod() {
AClass aClass = new AClass();
aClass.Method(this);
}
}
如何做到这一点?在这段代码中,我有错误:
不存在类型变量T的实例,因此BClass符合Class
没有测试这个,但是如果你想要类类型,你必须调用getClass()
public class BClass implements InterfaceX {
@Override
public void methodX() {
}
public void callAClassMethod() {
AClass aClass = new AClass();
aClass.Method(this.getClass());
}
}
多亏了markspace,我找到了解决方案:
public class AClass {
private List<? extends InterfaceX> myList = new ArrayList<>();
public <T extends InterfaceX> void Method( T argument ) {
myList.add(argument); // error here now... !!
}
}