如何传递实现接口的参数?
How to pass argument that implements a interface?
我有一个接口:
public interface InterfaceX {
void methodX();
}
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);
}
}
如何做到这一点?在这段代码中我有错误:
no instance(s) of type variable(s) T exist so that BClass conforms to 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... !!
}
}
我有一个接口:
public interface InterfaceX {
void methodX();
}
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);
}
}
如何做到这一点?在这段代码中我有错误:
no instance(s) of type variable(s) T exist so that BClass conforms to 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... !!
}
}