instance ofとisAsignable From

2105 ワード

instance ofインスタンスisAsignable Fromは、クラスのオブジェクトに対して
 
isAsignable From  は、クラスクラスクラスクラス1と他のクラスクラスクラスクラスクラス2が同じかどうか、または別のクラスの超クラスまたはインターフェースを判断するために使用されます。   通常の呼び出しフォーマットは 
Class1.isAssignableFrom(Class2)   
 
使用者とパラメータは全部です。  java.lang.lass  を選択します          に対する  instance of  は、オブジェクトのインスタンスがクラスまたはインターフェースであるかどうかを判断するために使用される、またはそのサブクラスのサブインターフェースの例である。      フォーマットは:   
oo   instanceof   TypeName     
     最初のパラメータはオブジェクトのインスタンス名であり、第二のパラメータは具体的なクラス名またはインターフェース名である。  String、InputStream。
 
public class Test {
	public static void main(String[] args) {
		List list = new ArrayList();
		System.out.println(list instanceof List);
		System.out.println(list instanceof ArrayList);
		
/*		System.out.println(list.getClass());
		System.out.println(List.class);
		System.out.println(ArrayList.class);*/
		
		System.out.println(list.getClass().isAssignableFrom(List.class));
		System.out.println(List.class.isAssignableFrom(list.getClass()));
	}
}
 
結果:
true true falsetrue
このうちinstance ofは子です。父isAsignable Fromは父です。
 
 
私たちはできるだけinstance of演算子を使わないべきです。
できるだけ多态を使ってそれに取って代わるべきです。
 
public interface Accounts {   

}

public class WaterAccounts implements Accounts {
	
}

public class ElectricityAccounts implements Accounts { 
	
}
 
//     
public class test {

	public static void main(String[] args) {

		Accounts accsWater = new WaterAccounts();
		Accounts accsElectricity = new ElectricityAccounts();

		acceptAcounts(accsWater);

	}

	//      instanceof
	public static void acceptAcounts(Accounts accs) {

		if (accs instanceof WaterAccounts) {

			System.out.println("   ");

		} else if (accs instanceof ElectricityAccounts) {

			System.out.println("   ");
		}

	}

	//        
	public static void acceptAcounts(WaterAccounts accs) {

		System.out.println("   ");

	}

	public static void acceptAcounts(ElectricityAccounts accs) {

		System.out.println("   ");

	}

}