支持模板类增量和减量的最佳方法

时间:2013-12-18 16:04:18

标签: java generics

我想创建一个模板函数,该函数依赖于泛型类型支持++--的能力。我们知道,Java 支持运算符重载,所以显然我需要定义一个需要increment()decrement()函数的接口:

public interface Quantized<E> extends Comparable<E> {
  public <E extends Quantized> E increment();
  public <E extends Quantized> E decrement();
}

public class Sequencer<E extends Quantized>{
  private E value;

  public <E extends Quantized> E doSometingWithSequence(){
    ...
    E rv = value.increment();
    return rv;
  }
}

如果我希望模板支持任何类,那么即使知道支持++--的接口也是不够的,因为Java不允许我们为类实现运算符。 但是,允许模板函数支持Integer等类型而不需要包装类来实现接口Quantized会很好。

有没有办法定义一个新的接口(除了定义一个抽象类)?

1 个答案:

答案 0 :(得分:0)

如果您需要泛型,则没有其他变体。这是泛型的主要目的 - 检查类在编译时有方法。但是你可以用反射来编写这个功能。检查对象是否在运行时具有递增方法并调用它。