您现在的位置是:亿华云 > 系统运维

一文搞定Java.lang.Class.IsInstance和Instanceof的区别

亿华云2025-10-04 01:10:04【系统运维】6人已围观

简介Java.lang.Class.isInstance和instanceof关键字都是用来判断对象类型的,但是当程序在运行时动态地判断对象的类型时instanceof就无能为力了。话不多说,直接上代码!

Java.lang.Class.isInstance和instanceof关键字都是文搞用来判断对象类型的,但是区别当程序在运行时动态地判断对象的类型时instanceof就无能为力了。话不多说,文搞直接上代码!

public class Car {  } public class Train{  } public class Benz extends Car {  public void printBenz() {  System.out.println("printBenz"); } } Car c1=new Car(); Benz b1=new Benz(); System.out.println(b1 instanceof Benz); System.out.println(b1 instanceof Car); System.out.println(b1 instanceof Train); //b1与Train没有关系,区别直接编译提示错误:Incompatible conditional operand types Benz and Train 

运行代码,文搞输出:

true

true

A instanceof B 用来判断实例A 是区别否是类B的实例。 因为b1 是文搞Benz的实例,所以第一个输出结果是区别true。

而Benz是文搞Car的子类,所以第二个输出结果也是站群服务器区别true。

接下来我们看一下动态地判断对象类型的文搞例子:

public static void main(String[] args)throws ClassNotFoundException {  System.out.println(checkType(newBenz(), "com.my.demo.Car")); System.out.println(checkType(newBenz(), "com.my.demo.Benz")); } public static boolean checkType(Object obj,String className) throws ClassNotFoundException {  return Class.forName(className).isInstance(obj); } 

运行代码,输出:

true

true

上述代码中,区别isInstance()是文搞Class类的一个方法public boolean isInstance(Object obj),该方法的区别作用是在运行时判断指定的obj对象是否是当前Class实例所代表的类的实例。在这里我要提及一下Class这个类。文搞在Java中每个类都有一个相对应的Class类的对象,换句话说:Java程序在启动运行时 一个XXX.java类经过编译生成XXX.class文件后,就会在JVM虚拟机中产生一个XXX类对应的网站模板Class类的对象,用于表示这个XXX类的类型信息,其核心作用可以总结为如下4点:

1.java.lang.Class类是Java中的反射中心,在运行时提供或获得某个对象的类型信息。

2.java是大小写敏感的,因此Class和关键字class并不冲突。

3.当我们创建一个类Car时,Java会自动生成一个内容是Car的Class类的对象, Car.class。

4.Class类的对象只能由JVM创建,无法通过new来创建。香港云服务器

很赞哦!(9169)