[英]How to pass argument that implements a interface?
我有一个界面:
public interface InterfaceX {
void methodX();
}
具有接收实现该接口的 object 的方法的 class :
public class AClass {
public <T extends InterfaceX> void Method( Class<T> argument ) {
// ....
}
}
还有一个实现接口的class,想调用上面的方法..
public class BClass implements InterfaceX {
@Override
public void methodX() {
}
public void callAClassMethod() {
AClass aClass = new AClass();
aClass.Method(this);
}
}
这个怎么做? 在这段代码中,我有错误:
不存在类型变量 T 的实例,因此 BClass 符合 Class<T>
没有对此进行测试,但如果你想要 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... !!
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.