您的位置:首页 > 编程语言 > Java开发

Java中instanceof关键字用法

2015-10-02 13:11 666 查看
java中可以通过instanceof关键字来判断一个对象是否是某一个类的实例:

用法:对象 instanceof 类 ->返回boolean类型

即:如果object是class的实例,instanceof运算之后返回true,否则返回false

下面看例子:

1.通过向上转型实例化:

class A {
}
class B extends A {
}
public class PolymorphismDemo2{
public static void main(String[] args) {
A a1 = new B();
A a2 = new A();
System.out.println("a1是A的实例么?:"+(a1 instanceof A));
System.out.println("a1是B的实例么?:"+(a2 instanceof B));
System.out.println("------------------------");
System.out.println("a2是A的实例么?:"+(a2 instanceof A));
System.out.println("a2是B的实例么?:"+(a2 instanceof B));
}
}


输出结果:

a1是A的实例么?:true

a1是B的实例么?:false

------------------------

a2是A的实例么?:true

a2是B的实例么?:false

2.通过向下转型实例化:

class A {
}
class B extends A {
}
class C extends A{
}
public class PolymorphismDemo2{
public static void main(String[] args) {
fun(new B());	//调用fun()传入B实例
fun(new C());	//调用fun()传入C实例
}
public static void fun(A a){
B b = (B) a;
}
}


传入两个实例,如果不加intanceof判断的话,会出错



所以需要加上instanceof判定,如下:
class A {
}
class B extends A {
}
class C extends A{
}
public class PolymorphismDemo2{
public static void main(String[] args) {
fun(new B());	//调用fun()传入B实例
fun(new C());	//调用fun()传入C实例
}
public static void fun(A a){
if(a instanceof B){
B b = (B) a;
}
if(a instanceof C){
C c = (C) a;
}
}
}
最后通过一个例题来理解intanceof的用法:

interface A {
}
class B implements A {
}
class C extends B {
}
public class PolymorphismDemo {
public static void main(String[] args) {
A a = new B();
B b = new B();
C c = new C();
System.out.println("a是A的实例么?:"+(a instanceof A));
System.out.println("a是B的实例么?:"+(a instanceof B));
System.out.println("-----------------------------------");
System.out.println("b是C的实例么?:"+(b instanceof C));
System.out.println("b是B的实例么?:"+(b instanceof B));
System.out.println("b是A的实例么?:"+(b instanceof A));
System.out.println("-----------------------------------");
System.out.println("c是C的实例么?:"+(c instanceof C));
System.out.println("c是B的实例么?:"+(c instanceof B));
System.out.println("c是A的实例么?:"+(c instanceof A));

}

}


输出结果:
a是A的实例么?:true

a是B的实例么?:true

-----------------------------------

b是C的实例么?:false

b是B的实例么?:true

b是A的实例么?:true

-----------------------------------

c是C的实例么?:true

c是B的实例么?:true

c是A的实例么?:true
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息