我想打一個愚蠢的例子爲我的學生,但鴕鳥政策知道如果我可以做什麼I'm想「通用方法」,「絕對值」的java
我想要做的ABS法仿製藥。
我的想法是與此類似:在這個LINEA
public class MiMath {
public static <T extends Number> T abs(T objeto) {
if (objeto.doubleValue()<0)
return (T) -objeto.doubleValue();
else
return objeto;
}
}
return (T) -objeto.doubleValue();
日食說,(T)是不是一個類型
這不是展示泛型的好方法。這是純粹的多態。 –
這裏不需要泛型,'doubleValue()'是'Number'上的一個虛擬方法。 abs(Number obj)'會做得很好。 – bobah
問題是,如果我傳入'BigDecimal',那麼它就是'doubleValue()'並返回'Double'。你得到一個'T'類型,但返回一個'Double'。你嘗試將它轉換爲'(T)',這顯然是一個'ClassCastException'。您可以在Java 7中轉換爲泛型類型 - 您顯然使用的是早期版本 - 但這對您無能爲力。 –