[英]Runtime class casting java
如何將源對象轉換為目標對象?
public static Object convertObject(Object source, Object target){
return (target.getClass())source; // IDE: 'not a statement'
}
我不完全確定您要做什么,但是要轉換為運行時類型,您需要Class.cast方法:
public static Object convertObject(Object source, Object target){
return target.getClass().cast(source);
}
這可以滿足您的要求,但實際上並沒有多大意義。 如果類型實際上不匹配,它會在運行時拋出java.lang.ClassCastException
。 這項檢查實際上幾乎是唯一要做的事情。
如果你真的需要做一些轉換,這應該通過泛型方法來完成:
public static <T> T convert(Object source, Class<T> targetClass) {
return targetClass.cast(source);
}
public static Object convertObject(Object source, Object target) {
return target.getClass().cast(source);
}
至少在調用此方法后,不需要顯式轉換。
static class A {
String foo() { return "A"; };
}
static class B extends A {
String foo() { return "B"; };
}
static class C extends B {
String foo() { return "C"; };
}
測試
A c = new C();
A b1 = new B();
B b = convert(c, B.class);
B b2 = convertObject(c, b1); // incompatible types: Object cannot be converted to B
// explicit casting needed (B) convertObject(c, b1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.