我有幾個類(FloatOperand,BooleanOperand,IntegerOperand),它們非常相似。它們只在被調用的「parse」方法(parseFloat,parseBoolean等)方面有所不同 - 我可以用一個GenericOperand類來替換這個xxOperand類嗎? (也許通過泛型/反射組合)。泛化不同的實現通過使用泛型
public class FloatOperand implements ConditionOperand {
Float parsedNumber = 0.0f;
public FloatOperand parse(String aString) {
if(!StringUtils.isEmpty(aString)) {
parsedNumber = Float.parseFloat(aString);
}
return this;
}
public int compareTo(ConditionOperand arg) {
Float someArg = (Float) arg.getWrappedToken();
return parsedNumber.compareTo(someArg);
}
public Float getWrappedToken() {
return this.parsedNumber;
}
/************/
public interface ConditionOperand extends Comparable<ConditionOperand> {
/**
* @param aString
* - String representing a number, or a date, or a string.
*/
ConditionOperand parse(String aString);
Object getWrappedToken();
}
試圖將這些與反射相結合將花費大量的速度開銷。這幾乎肯定不值得。 –