读书人

关于instanceof运用一个小程序里出错

发布时间: 2012-01-06 22:55:18 作者: rapoo

关于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

读书人网 >J2SE开发

热点推荐