偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

一文搞定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虛擬機(jī)中產(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

2021-08-13 05:50:01

ContainerdDockerKubernetes

2019-09-23 10:51:14

JavaJava虛擬機(jī)Linux

2024-01-09 08:24:47

JMM核心線程

2021-10-25 16:01:01

Linux設(shè)備樹字符串

2017-07-28 09:11:14

HIVEHBASE區(qū)別

2024-04-10 13:50:41

CentOSUbuntu操作系統(tǒng)

2022-08-17 18:25:37

Java分布式搜索引擎

2021-08-31 07:02:20

Diff算法DOM

2023-08-01 08:27:15

Java I/ONIO

2021-07-05 00:00:55

TomcatNginxApache

2023-12-28 07:37:24

CAS內(nèi)存阻塞

2020-10-29 08:55:04

微服務(wù)

2021-10-06 20:23:08

Linux共享內(nèi)存

2020-03-03 17:47:07

UDP TCP面試題

2022-04-15 08:03:41

SaaS應(yīng)用管理市場

2021-08-31 07:02:34

數(shù)據(jù)響應(yīng)Vue偵測數(shù)據(jù)變化

2021-04-19 17:32:34

Java內(nèi)存模型

2020-11-04 07:49:04

Select

2021-04-15 09:41:30

云計算PAASSAAS
點贊
收藏

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