自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一文搞定Java.lang.Class.IsInstance和Instanceof的區(qū)別

開發(fā) 前端
Java.lang.Class.isInstance和instanceof關(guān)鍵字都是用來判斷對象類型的,但是當(dāng)程序在運行時動態(tài)地判斷對象的類型時instanceof就無能為力了。

[[420534]]

Java.lang.Class.isInstance和instanceof關(guān)鍵字都是用來判斷對象類型的,但是當(dāng)程序在運行時動態(tài)地判斷對象的類型時instanceof就無能為力了。話不多說,直接上代碼!

  1. public class Car { 
  2. public class Train{ 
  3. public class Benz extends Car { 
  4. public void printBenz() { 
  5. System.out.println("printBenz"); 
  6. Car c1=new Car(); 
  7. Benz b1=new Benz(); 
  8. System.out.println(b1 instanceof Benz); 
  9. System.out.println(b1 instanceof Car); 
  10. System.out.println(b1 instanceof Train); //b1與Train沒有關(guān)系,直接編譯提示錯誤:Incompatible conditional operand types Benz and Train 

運行代碼,輸出:

true

true

A instanceof B 用來判斷實例A 是否是類B的實例。 因為b1 是Benz的實例,所以第一個輸出結(jié)果是true。

而Benz是Car的子類,所以第二個輸出結(jié)果也是true。

接下來我們看一下動態(tài)地判斷對象類型的例子:

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

運行代碼,輸出:

true

true

上述代碼中,isInstance()是Class類的一個方法public boolean isInstance(Object obj),該方法的作用是在運行時判斷指定的obj對象是否是當(dāng)前Class實例所代表的類的實例。在這里我要提及一下Class這個類。在Java中每個類都有一個相對應(yīng)的Class類的對象,換句話說:Java程序在啟動運行時 一個XXX.java類經(jīng)過編譯生成XXX.class文件后,就會在JVM虛擬機中產(chǎn)生一個XXX類對應(yīng)的Class類的對象,用于表示這個XXX類的類型信息,其核心作用可以總結(jié)為如下4點:

1.java.lang.Class類是Java中的反射中心,在運行時提供或獲得某個對象的類型信息。

2.java是大小寫敏感的,因此Class和關(guān)鍵字class并不沖突。

3.當(dāng)我們創(chuàng)建一個類Car時,Java會自動生成一個內(nèi)容是Car的Class類的對象, Car.class。

4.Class類的對象只能由JVM創(chuàng)建,無法通過new來創(chuàng)建。

 

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2021-03-28 18:40:02

LinuxWindowsJava

2019-09-23 10:51:14

JavaJava虛擬機Linux

2021-08-13 05:50:01

ContainerdDockerKubernetes

2024-04-10 13:50:41

CentOSUbuntu操作系統(tǒng)

2017-07-28 09:11:14

HIVEHBASE區(qū)別

2021-10-25 16:01:01

Linux設(shè)備樹字符串

2024-01-09 08:24:47

JMM核心線程

2023-12-28 07:37:24

CAS內(nèi)存阻塞

2023-08-01 08:27:15

Java I/ONIO

2021-07-05 00:00:55

TomcatNginxApache

2020-03-03 17:47:07

UDP TCP面試題

2020-10-29 08:55:04

微服務(wù)

2021-10-06 20:23:08

Linux共享內(nèi)存

2022-08-17 18:25:37

Java分布式搜索引擎

2021-08-31 07:02:20

Diff算法DOM

2020-11-04 07:49:04

Select

2023-10-30 18:08:50

2022-06-10 09:04:24

Python讀取文件代碼

2021-04-15 09:41:30

云計算PAASSAAS

2021-04-02 06:17:10

大數(shù)加減乘除數(shù)據(jù)結(jié)構(gòu)算法
點贊
收藏

51CTO技術(shù)棧公眾號