package reflection01;

import java.util.List;

/**
 * Demosntriert die Verwendung des Class-Objektes.
 * 
 * @author  Ralf Kunze (rkunze@uos.de), Institut fuer Informatik, Universitaet Osnabrueck
 * @date 31.05.2007
 */
public class ClassTest {

	public static void main(String[] args) {
		
		Class intClass1 = Integer.TYPE;
		Class intClass2 = int.class;
		
		System.out.println("intClass1:\t" + intClass1);
		System.out.println("intClass2:\t" + intClass2);
//		if(intClass1 == intClass2) {
//			System.out.println("Integer.TYPE==int.class");
//		}
//		System.out.println("intClass1.isPrimitive:\t" + intClass1.isPrimitive());
		
//		Class classVoid = void.class;
//        System.out.println(classVoid);
//		System.out.println("classVoid.isPrimitive:\t" + classVoid.isPrimitive());
		
//		Class classList = List.class;
//		System.out.println("classList:\t\t" + classList);
//		System.out.println("classList.isInterface:\t" + classList.isInterface());
		
//		Class classArrayList = null;
//		try {
//			classArrayList = Class.forName("ArrayList");
//		} catch (ClassNotFoundException e) {
//			System.err.println("Klasse <ArrayList> konnte nicht geladen werden");
//		}
		
//		try {
//			classArrayList = Class.forName("java.util.ArrayList");
//		} catch (ClassNotFoundException e) {
//			System.err.println("Klasse <java.util.ArrayList> konnte nicht geladen werden");
//		}
//		
//		System.out.println("classArrayList:\t" + classArrayList);
//		
//		
//		String indent = "\t";
//		System.out.println("Oberklassen von " + classArrayList.getName());
//		Class superClass = classArrayList;
//		while((superClass = superClass.getSuperclass())!=null) {
//			System.out.println(indent + superClass);
//			indent += indent;
//		}
//		
//		System.out.println("classArrayList.getInterfaces:\t");
//		for(Class c: classArrayList.getInterfaces()) {
//			System.out.println("\t\t" + c);
//		}
		
//		int[] i = new int[12];
//		Class classIntArray = i.getClass();
//		System.out.println("classIntArray:\t" + classIntArray);
//		
//		double[] d = new double[12];
//		Class classDoubleArray = d.getClass();
//		System.out.println("classDoubleArray:\t\t" + classDoubleArray);
//		System.out.println("classDoubleArray.isArray:\t" + classDoubleArray.isArray());
//		
//        Double[] d2 = new Double[12];
//        Class classDouble2Array = d2.getClass();
//        System.out.println("classDouble2Array:\t\t" + classDouble2Array);
//        System.out.println("classDouble2Array.isArray:\t" + classDouble2Array.isArray());
	}
}
