Java使用带接口的泛型类型

时间:2015-01-17 18:21:15

标签: java generics interface user-defined

我正在构建一个Java库,我希望用户能够定义自己的某些内置类的版本,实现接口。

现在我得到了以下类,其中Evaluator是内置的主程序,它对Values(内置或用户定义的类,实现Value接口)进行一些处理。

Evaluator由一个Processor(内置或用户定义的类,实现Processor接口)构成,Processor负责处理Values。

因此,现在我想在Evaluator类和Processor接口中使用Value接口,同时在UserProcessor类中使用UserValues,但我似乎没有做到这一点

价值界面:

 public interface Value {
     public Value valueOf(String s)
}

用户定义的值由程序处理的值类

public class UserValue implements Value { … }
public class DefaultValue implements Value { … }

接口定义对象的对象有哪些动作

public interface Processor<T extends Value> {
    public T process(T value);
}

使用用户定义的Value类的某些对象执行某些操作的类 UserProcessor必须使用UserValue

public class UserProcessor implements Processor<UserValue>
public class DefaultProcessor implements Processor<DefaultValue>

包含主程序的类:

public class Evaluator {
    private Processor<Value> processor;
    public Evaluator() {
        setProcessor(new DefaultProcessor());
    }
    public void setProcessor(Processor<Value> processor) {
        this.processor = processor;
    }
    public Value evaluate(String s) {
        Value val = processor.ValueOf(s);
        return processor.process(val);
    }
}

setProcessor(new DefaultProcessor())会出错:

The method setProcessor(Processor<Value>) in the type Evaluator is not applicable for the arguments (DefaultProcessor)

因此,为了澄清例程:构造Evaluator,可选地,用户设置自定义Processor和Value类,并且求值程序尝试解析String。

0 个答案:

没有答案