package reflection08;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

/**
 * Ermitteln der Felder der Klasse Angestellter (und der Oberklasse Person).
 * 
 * @author Ralf Kunze (rkunze@uos.de), Institut fuer Informatik, Universitaet
 *         Osnabrueck
 * @date 02.06.2007
 */
public class VariablenTest {

    public static void main(String[] args) {

        Angestellter a = new Angestellter("Heinz Wacker", 42, "AG Multimedia", 4223);
        Class c = a.getClass();

        // Mit getFields alle öffentlichen Felder finden, auch geerbte
        System.out.println("Ausgabe von getFields");
        for (Field f : c.getFields()) {
            Object value = null;
            try {
                value = f.get(a);
                System.out.println(f.getName() + ": " + value);
            } catch (IllegalArgumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

        // Mit getDeclaredFields alle Felder finden, auch private,
        // aber nur der Klasse Angestellter und keine geerbten Felder
        
//        System.out.println("Ausgabe von getDeclaredFields");
//        for (Field f : c.getDeclaredFields()) {
//            Object value = null;
//            try {
//                if (f.getModifiers() != Modifier.PRIVATE) {
//                    value = f.get(a);
//                    System.out.println(f.getName() + ": " + value);
//                } else {
//                    System.out.println(f.getName() + " ist nicht public");
//                }
//            } catch (IllegalArgumentException e) {
//                // TODO Auto-generated catch block
//                e.printStackTrace();
//            } catch (IllegalAccessException e) {
//                // TODO Auto-generated catch block
//                e.printStackTrace();
//            }
//        }

    }

}
