日期:2014-05-20  浏览次数:20753 次

关于instanceof运用,一个小程序里出错。
Java code
class A{}
class B extends A
{
    public static void main(String args[])
    {
        if(new B() instanceof C)
            System.out.println("B是A的子类");
    }
}
class C{}

instanceof目的就是判断
obj instanceof classname
obj引用是不是classname类型的。
可本例中,好象编译要出错,如果能指定,那这个操作符就失去了意义。

------解决方案--------------------
new B() instanceof C


你眼睛很好 呵呵
------解决方案--------------------
在这种情形下根本没意义,你自己明知道类型还去检查干什么。
------解决方案--------------------
new B() instanceof C
类B和类C根本没有什么关系
把C改为A就对了
------解决方案--------------------
使用方法:对象变量 instanceof 类名或接口名
例如
Java code
class A {}
class B extends A {}
class C extends A {}
...
A a = null;
if (Math.random() > 0.5) {
    a = new B();
} else {
    a = new C();
}
...
if (a instanceof B) {
    B b = (B) a;
    //b.B特有的功能
} else if (a instanceof C) {
    C c = (C) a;
    //c.C特有的功能
}

------解决方案--------------------
instanceof 根据英文名字就很明显知道 是。。。的实例
------解决方案--------------------
引用楼主 Java_gannbare 的帖子:
Java codeclass A{}
class B extends A
{
public static void main(String args[])
{
if(new B() instanceof C)
System.out.println("B是A的子类");
}
}
class C{}


instanceof目的就是判断
obj instanceof classname
obj引用是不是classname类型的。
可本例中,好象编译要出错,如果能指定,那这个操作符就失去了意义。

------解决方案--------------------
Mark
------解决方案--------------------
子类instanceof父类 ture
父类instanceof子类 false