如何传递实现接口的参数?

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... !!
    }
}