[英]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.