我想创建一个模板函数,该函数依赖于泛型类型支持++
和--
的能力。我们知道,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
会很好。
有没有办法定义一个新的接口(除了定义一个抽象类)?
答案 0 :(得分:0)
如果您需要泛型,则没有其他变体。这是泛型的主要目的 - 检查类在编译时有方法。但是你可以用反射来编写这个功能。检查对象是否在运行时具有递增方法并调用它。