javaのinstance ofとクラスの等価コードの例


本論文で研究したのは主にjava中のinstance ofとクラスの等価性に関する問題であり、具体的には以下の通りである。
javaにおけるinstance of演算子は、実行時にオブジェクトが特定のクラスであるかどうかを示すための例である。instance ofは、このオブジェクトがこの特定のクラスまたはそのサブクラスの一例であるかどうかを、ブール値を返すことによって指摘する。
実例1(instance of)
インターフェース

public interface Person {
public void eat();
}
実現クラス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;

@Override
public void eat() {
 System.out.println("+++++++++");
}
}
メイン関数

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つのコードはコンパイル中にエラーが発生しません。
実行結果:

true
false
true
true
実例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());
	}
}
出力内容は以下の通りです。

Testing x of type Base
-----------------------------------------
x instanceof Base true
x instanceof Derived false
-----------------------------------------
Base.isInstance(x) true
Derived.isInstance(x) false
-----------------------------------------
x.getClass() == Base.class true
x.getClass() == Derived.class false
x.getClass().equals(Base.class)) true
x.getClass().equals(Derived.class)) false
*****************************************
*****************************************
Testing x of type Derived
-----------------------------------------
x instanceof Base true
x instanceof Derived true
-----------------------------------------
Base.isInstance(x) true
Derived.isInstance(x) true
-----------------------------------------
x.getClass() == Base.class false
x.getClass() == Derived.class true
x.getClass().equals(Base.class)) false
x.getClass().equals(Derived.class)) true
*****************************************
*****************************************

Process finished with exit code 0
以上のテストによって、以下の結論が得られます。
  • instance of()とisInstance()が生成した結果は同じ
  • です。
  • equals()と=生成の結果は同じ
  • です。
  • 親類は、サブクラスの例とすることができるが、サブクラスは、親タイプのインスタンス
  • とすることができない。
  • クラスのオブジェクトを比較する場合、
  • を継承することを考慮しません。
    締め括りをつける
    以上がJava中のinstance ofとクラスの等価コードの例の全部です。興味のある方は引き続き当駅の他のテーマを参照してください。友達のサポートに感謝します。