[英]Why is Wrapper Integer to Float conversion not possible in java
[英]Java Object Conversion to Integer and String wrapper
我有一個函數的java.lang.Object
返回類型。 我想驗證返回的任何Object
值是數字類型( double
或long
或int
或byte
或Double
或Long
或Byte
或Float
或Double
....),如果是真的想要轉換為Integer包裝器引用類型。 另外,如果Object
實例包含一個String
值,我希望將其存儲在String引用中。
具有函數的
Object
返回類型。 我想驗證返回的任何對象值都是數字類型(雙精度或長整數或整數或字節或雙精度或長整數或字節或浮點數或雙精度..)
if (obj instanceof Number)
...
如果是真的要轉換為Integer包裝器引用類型
if ...
val = (Integer) ((Number) obj).intValue();
另外,如果Object實例包含一個String值,我希望將其存儲在String引用中。
...
else if (obj instanceof String)
val = obj;
您可以執行以下操作:
Object obj = getProcessedObject();
if(obj instanceof Number) {
// convert into a Integer wrapper reference type
Integer ref1 = ((Number)obj).intValue();
}
if(obj instanceof String) {
// process object for String
String ref = (String)obj;
}
返回Object的方法不能返回基本類型,例如double,long或int。
您可以使用instanceof檢查實際返回的類型:
if (object instanceof Number){
// want to convert into a Integer wrapper reference type
object = ((Number)object).intValue(); // might lose precision
}
您可以通過類型轉換將其分配給String變量
if (object instanceof String){
stringVariable = (String)object;
}
盡管您可能遇到了嚴重的設計問題,但是要實現所需的功能,可以使用instanceof運算符或getClass()方法:
Object o = myFunction();
if(o instanceof Integer) { //or if o.getClass() == Integer.class if you want
only objects of that specific class, not the superclasses
Integer integer = (Integer) o;
int i = integer.intValue();
}
//do your job with the integer
if(o instanceof String)
//String job
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.