4
我想創建一個模板函數,它依賴於泛型類型支持++
和--
的能力。我們知道,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
,那將會很不錯。
有沒有辦法定義一個新的接口(除了定義一個抽象類)?
不使用包裝處理相同的方式處理主體和對象是棘手的。 Primatives是爲速度而構建的,並不符合java的其餘部分。 –
您可以編寫一個包裝,只需[Number](http://docs.oracle.com/javase/7/docs/api/java/lang/Number。 HTML)。 –
如果你想看到http://amelentev.github.io/java-oo/在java中的操作符重載 – vandale