当前位置: 代码迷 >> J2SE >> 关于instanceof运用,一个小程序里出错。该怎么解决
  详细解决方案

关于instanceof运用,一个小程序里出错。该怎么解决

热度:151   发布时间:2016-04-24 12:49:26.0
关于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
  相关解决方案