java - 使用泛型概括不同的实现

标签 java generics reflection

我有几个非常相似的类(FloatOperand、BooleanOperand、IntegerOperand)。它们仅在调用的“解析”方法上有所不同(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();
}

最佳答案

您实际上使用了不同的算法,例如此处的Float.parseFloat。所以从我从这几行看到的来看,单独的类似乎是可以的。

关于java - 使用泛型概括不同的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10389579/

相关文章:

javax.inject 不存在

java - Maven 自定义依赖类型

类和新实例的 Java 泛型

java - 如何重载泛型构造函数

Java反射(reflect)getConstructor NoSuchMethodException错误

java - Groovy 中的克隆和扩展类

java - 当我有要打印的字符数量时,如何计算文本文件的估计大小?

java - 模拟时长按而不是简单

C#:测试一个对象是否实现了接口(interface)列表中的任何一个?

C# 昂贵的方法调用? Assembly.GetEntryAssembly() 和 Assembly.GetCallingAssembly()