我正在构建一个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。