本文研究的主要是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é)論:
總結(jié)
以上就是本文關(guān)于java中instanceof與Class的等價(jià)性代碼示例的全部內(nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
新聞熱點(diǎn)
疑難解答
圖片精選