簡體   English   中英

如何添加兩個Integer類(instanceof)

[英]How to add two Integer classes(instanceof)

我已經實現了這種方法:

    public static Object findInstance(Object value);

方法采用對象值並將類類型(如果可能)轉換為Integer或Double。 調用findInstance之后,我想檢查我的類類型,如下所示:

    value.getClass();

結果是java.lang.Double或java.lang.Integer。(符合預期)

但是我不能從該對象的Integer(或Double)類中調用任何方法。

最終結果應為:

    value1=findInstance(value1);
    value2=findInstance(value2);
    int sum=value1.intValue()+value2.intValue();
    System.out.println("Sum:"+sum);

有人可以解釋為什么我不能調用方法intValue()嗎?

關於此的一些評論:首先,azurefrog陳述了正確的原因:您的變量屬於Object類型,而不是Number類型。

第二:如果要在對象上有條件地調用intValue()或doubleValue(),請讓您的方法返回Number類型而不是Object類型的變量。

第三:我不知道您正在執行的任務,因此您可能有充分的理由這樣做。 但是,嘗試以不需要任何類型的強制轉換操作或instanceof調用的方式編寫代碼。 通常,這些操作的出現是“設計氣味”的跡象。 在您的情況下可能並非如此,但在我並非總是如此謙虛的觀點中,這似乎有些可疑。

請注意,BigDecimal,BigInteger,Byte,Double,Float,Integer,Long,Short實現了Number接口(這些類將通過is-a Number測試),因此您不必“ findInstance”它們。 您可以使用數字界面:

if(obj instanceof Number) {
    Number number = (Number) obj;
    int value = number.intValue();
    ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM