国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > Java > 正文

java中instanceof與Class的等價(jià)性代碼示例

2024-07-13 10:17:28
字體:
供稿:網(wǎng)友

本文研究的主要是java中instanceof與Class的等價(jià)性的相關(guān)問題,具體如下。

java 中的instanceof 運(yùn)算符是用來在運(yùn)行時(shí)指出對(duì)象是否是特定類的一個(gè)實(shí)例。instanceof通過返回一個(gè)布爾值來指出,這個(gè)對(duì)象是否是這個(gè)特定類或者是它的子類的一個(gè)實(shí)例。

實(shí)例1(instanceof)

接口Person

public interface Person {public void eat();}

實(shí)現(xiàn)類People

public class People implements Person {private int a=0; @Override public void eat() { System.out.println("======"+a);  }}

子類xiaoming:

public class xiaoming extends People {private String name;@Overridepublic void eat() { System.out.println("+++++++++");}}

主函數(shù)

public static void main(String[] args) { People p=new People(); xiaoming x=new xiaoming(); System.out.println(p instanceof Person); System.out.println(p instanceof xiaoming); -----2 System.out.println(x instanceof Person); System.out.println(x instanceof People); }

注意:上面2處的代碼在編譯時(shí)不會(huì)報(bào)錯(cuò)。

運(yùn)行結(jié)果:

truefalsetruetrue

實(shí)例2

package com.test.class_obj;class Base {}class Derived extends Base {}public class FamilyVsExactType {	static void test(Object x) {		System.out.println("Testing x of type " + x.getClass().getSimpleName());		System.out.println("-----------------------------------------");		System.out.println("x instanceof Base " + (x instanceof Base));		System.out.println("x instanceof Derived " + (x instanceof Derived));		System.out.println("-----------------------------------------");		System.out.println("Base.isInstance(x) " + Base.class.isInstance(x));		System.out.println("Derived.isInstance(x) " +		        Derived.class.isInstance(x));		System.out.println("-----------------------------------------");		System.out.println("x.getClass() == Base.class " +		        (x.getClass() == Base.class));		System.out.println("x.getClass() == Derived.class " +		        (x.getClass() == Derived.class));		System.out.println("x.getClass().equals(Base.class)) " +		        (x.getClass().equals(Base.class)));		System.out.println("x.getClass().equals(Derived.class)) " +		        (x.getClass().equals(Derived.class)));		System.out.println("*****************************************");		System.out.println("*****************************************");	}	public static void main(String[] args) {		test(new Base());		test(new Derived());	}}

輸出內(nèi)容如下:

Testing x of type Base-----------------------------------------x instanceof Base truex instanceof Derived false-----------------------------------------Base.isInstance(x) trueDerived.isInstance(x) false-----------------------------------------x.getClass() == Base.class truex.getClass() == Derived.class falsex.getClass().equals(Base.class)) truex.getClass().equals(Derived.class)) false**********************************************************************************Testing x of type Derived-----------------------------------------x instanceof Base truex instanceof Derived true-----------------------------------------Base.isInstance(x) trueDerived.isInstance(x) true-----------------------------------------x.getClass() == Base.class falsex.getClass() == Derived.class truex.getClass().equals(Base.class)) falsex.getClass().equals(Derived.class)) true**********************************************************************************Process finished with exit code 0

通過以上測(cè)試可以得出以下結(jié)論:

  • instanceof() 和 isInstance() 生成的結(jié)果相同
  • equals() 和 == 生成的結(jié)果相同
  • 父類可以是子類的實(shí)例,但子類不可以是父類的實(shí)例
  • Class 對(duì)象比較時(shí),不考慮繼承

總結(jié)

以上就是本文關(guān)于java中instanceof與Class的等價(jià)性代碼示例的全部內(nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JAVA教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 建始县| 屏南县| 阿尔山市| 卢龙县| 西盟| 宜章县| 阳城县| 黔南| 德清县| 璧山县| 麦盖提县| 白河县| 永靖县| 会东县| 鹤庆县| 雷州市| 泸定县| 昭通市| 潍坊市| 泊头市| 泾源县| 大安市| 赤水市| 横山县| 云梦县| 南平市| 齐河县| 丰顺县| 双桥区| 卓尼县| 阳春市| 阿拉善右旗| 湘潭县| 邵东县| 西城区| 石首市| 永寿县| 定陶县| 江达县| 江永县| 安图县|