国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 崇左市| 罗田县| 新乐市| 浮梁县| 西畴县| 德兴市| 泽库县| 磐安县| 虞城县| 梁平县| 新龙县| 高州市| 盱眙县| 满城县| 磐石市| 永嘉县| 江华| 贵阳市| 社旗县| 蒲城县| 广东省| 阳西县| 古丈县| 阳城县| 罗甸县| 固镇县| 泸定县| 正镶白旗| 嵩明县| 青河县| 平舆县| 青海省| 漳平市| 枝江市| 紫云| 两当县| 贵定县| 九江县| 克拉玛依市| 海口市| 藁城市|