当前位置:   article > 正文

Java中的instanceof和isInstance_java isinstance

java isinstance

1. instanceof 是一个操作符

使用方法:

if(a instanceof B){
}
  • 1
  • 2

表示:a 是不是 B 这种类型

2. isInstance是Class类的一个方法

public boolean isInstance(Object obj)
  • 1

使用方法:

if(B.Class.isInstance(a)){

}
  • 1
  • 2
  • 3

表示:
a 是否能强转为 B 类型

官方文档:
判定指定的 Object 是否与此 Class 所表示的对象赋值兼容。此方法是 Java 语言 instanceof 运算符的动态等效方法。如果指定的 Object 参数非空,且能够在不引发 ClassCastException 的情况下被强制转换成该 Class 对象所表示的引用类型,则该方法返回 true;否则返回 false。

特别地,当该 Class 对象表示一个已声明的类时,若指定的 Object 参数是所表示类(或其任一子类)的一个实例,则此方法返回 true;否则返回 false。

如果此 Class 对象表示一个数组类,且通过身份转换或扩展引用转换,指定的 Object 参数能转换为一个数组类的对象,则返回 true;否则返回 false。

如果此 Class 对象表示一个接口,且指定 Object 参数的类或任一超类实现了此接口,则此方法返回 true;否则返回 false。如果此 Class 对象表示一个基本类型,则此方法返回 false。

3. 代码检验

interface A {
}

class B {
}

class C implements A {
}

class D extends B {
}

public class TestInstanceof {
	
	public static void main(String[] args) {
		C t1 = new C();
		D t2 = new D();

		// obj instanceof class:这个对象是不是这种类型.
		// 测试1:一个对象是本身类的一个对象
		System.out.println(t1 instanceof C); // true
		System.out.println("============");

		// 测试2:一个对象是本身类父类(父类的父类)和接口的一个对象
		System.out.println(t1 instanceof A); // true
		System.out.println(t2 instanceof D); // true
		System.out.println("============");

		// 测试3:所有对象都是object
		System.out.println(t1 instanceof Object); // true
		System.out.println(t2 instanceof Object); // true
		System.out.println("============");

		// 测试4:凡是null相关的都是false
		System.out.println(null instanceof Object); // false
		System.out.println(null instanceof B); //  false
		System.out.println("============");

		// class.isInstance(obj):这个对象能不能被转化为这个类
		// 测试1:一个对象是本身类的一个实例
		System.out.println(C.class.isInstance(t1)); // true
		System.out.println("============");

		// 测试2:一个对象能被转化为本身类所继承的类(父类的父类)和实现的接口(接口的父接口)强转
		System.out.println(A.class.isInstance(t1)); // true
		System.out.println(B.class.isInstance(t2)); // true
		System.out.println("============");

		// 测试3:所有对象都能被Object强转
		System.out.println(Object.class.isInstance(t1)); // true
		System.out.println(Object.class.isInstance(t2)); // true
		System.out.println("============");

		// 测试4:凡是和null相关的都是false
		System.out.println(Object.class.isInstance(null)); // false
		System.out.println(D.class.isInstance(null)); // false
		
		
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60

结果:

true
============
true
true
============
true
true
============
false
false
============
true
============
true
true
============
true
true
============
false
false

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号