Typecast对象类型为java中用户定义的POJO

时间:2014-12-22 10:16:31

标签: java

考虑一个例子

public Object myMethod()
{
     //some condition
     return obj of type Object1;
     //else
     return obj of type Object2;

}

我将其称为如下,

Object obj = myMethod();

obj = (obj instanceof Object1)? (Object1)obj : (Object2) obj;

我的问题是甚至在类型转换后,obj既不是Object1类型也不是Object2类型。解决这个问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

如果没有分配你要投射的类型的变量,那么投射是没有意义的,所以你需要两个变量。

Object obj = myMethod();
Object1 obj1 = null;
Object2 obj2 = null;
if (obj instanceof Object1) {
    obj1 = (Object1) obj;
    // some specific Object1 handling
} else if (obj instanceof Object2) {
    obj2 = (Object2) obj;
    // some specific Object2 handling
}

答案 1 :(得分:1)

您正在投射的对象已经是正确的类型。在致电myMethod之后,您的演员阵容毫无用处。

您需要将强制转换对象分配给相同类型的引用才能使用它。

Object obj = myMethod();
if( obj instanceof Object1 ){
   doSomething((Object1) obj);
} else {
   doSomething((Object2) obj);
}

然后,您可以在重载的doSometing方法中使用正确的界面。