Java 如何创建参数化接口的实例

Java 如何创建参数化接口的实例,java,generics,Java,Generics,我有以下代码: ObjProcessor processor = getProcessor(); MyClass myObj = getObjToProcess();// MyClass extends PersistentObj 课程及类别: public class ObjProcessor { public <OP extends PersistentObj) void process(Class<OP> objClazz, OP object, Modifier

我有以下代码:

ObjProcessor processor = getProcessor();
MyClass myObj = getObjToProcess();// MyClass extends PersistentObj
课程及类别:

public class ObjProcessor {
   public <OP extends PersistentObj) void process(Class<OP> objClazz, OP object, Modifier<OP> modifier) {
     ...
   }
}
public interface Modifier<T> {
    void modify(T obj);
}

在Ron C的评论之后,我创建了这个修饰符:

 Modifier<MyClass> mod = new Modifier<MyClass>() {
    @Override
    public void modify(MyClass obj) {
       // empty
    }
}; 

proc.process(myObj.getClass(), myObj, mod); // compilation error!
Modifier mod=new Modifier(){
@凌驾
公共作废修改(MyClass obj){
//空的
}
}; 
进程(myObj.getClass(),myObj,mod);//编译错误!
Eclipse给出了以下错误:

The method process(Class<OP>, OP, Modifier<OP>) in the type ObjProcessor is not applicable for the arguments (Class< capture#1-of ? extends MyClass>, MyClass, Modifier<MyClass>)
类型ObjProcessor中的方法进程(Class、OP、Modifier)不适用于参数(Class、MyClass、Modifier)

您可以创建一个匿名内部类作为
修饰符
接口的实例:

processor.process(myObj.getClass(), myObj, new Modifier<MyClass>() {

    @Override
    public void modify(MyClass obj) {
        //Add implementation here
    }
});

对于第二个问题,解决方案是将流程声明更改为:

public <OP extends ObjProcessor> void process(Class<? extends OP> objClazz, OP object, Modifier<OP> modifier) {

}

公共作废流程(类您需要编写一个实现
修饰符的类。它可以是匿名的。您使用Java 8吗?谢谢Ron,但没有解决它。请在我尝试您的解决方案后查看我的添加内容。我无法修改ObjProcessor,因为它是第三方库。然后您必须使用
MyClass.class
作为参数。我将解释一下。谢谢n、 明白了,我稍后再试。
processor.process(myObj.getClass(), myObj, obj -> {
    //Add implementation here
});
public <OP extends ObjProcessor> void process(Class<? extends OP> objClazz, OP object, Modifier<OP> modifier) {

}