Java中instanceof关键字用法

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值