instanceOf在应用程序服务器中不起作用

时间:2014-11-03 09:17:44

标签: java

下面的代码来自我的测试用例,但是如果我在应用服务器中运行它,instanceOf无效并进入else循环并抛出异常。

abstract class A { }

class B extends A { }

class C extends A { }

class MyClass {
    public void setObject(Object obj){  
        if(obj instanceOf A){
           //typecast
        }else
            throw new Exception("Object not supported");
        }
    }

客户代码 -

B b = new B(); 
b.set..
MyClass client = new MyClass(); 
client.setObject(b);

2 个答案:

答案 0 :(得分:1)

试试这个:

abstract class A { }

class B extends A { }

class C extends A { }

class MyClass {

    public static void main(String args[]){
      //call method of the same calls
    }

public void setObject(Object obj){

 if(obj instanceof A){
   // assign your object
 }else
    throw new Exception("Object not supported");
}




}

答案 1 :(得分:0)

看看这个并根据这个确定你的例子。

例如,你需要检查一下扩展第一类的第二类。

abstract class FirstClass {

    public void setobject(Object o){
        if (o instanceof FirstClass) {
            System.out.println("Matched****");
        }else{
            System.out.println(" Not Matched****");
        }
    }

}

public class SecondClass extends FirstClass{

    public SecondClass() {
        System.out.println("Second Class*******");
    }

    @Override
    public void setobject(Object o) {
        super.setobject(o);
    }


}

并进入你的主要calss检查

SecondClass class1 = new SecondClass();
        if (class1 instanceof FirstClass) {
            System.out.println("Matched **************");
        }else{
            System.out.println("Not Matched **************");
        }