package lecture.etc;

import java.lang.reflect.Field;

import jp.avaj.lib.debug.L;

/**
 * リフレクション - フィールド情報を取得する Java
 */
class GetFieldInfo {
  public static void main(String[] args) {
    try {
      Class myClass = MyClass.class;
      L.p("-- すべてのフィールドを取得する");
      Field[] fields = myClass.getDeclaredFields();
      for (Field field : fields) {
        print(field);
      }
      L.p("-- publicのフィールドを取得する");
      fields = myClass.getFields();
      for (Field field : fields) {
        print(field);
      }
      L.p("-- 名前を指定してprivateのフィールドを取得する");
      print(myClass.getDeclaredField("str0"));
      L.p("-- 名前を指定してpublicのフィールドを取得する");
      print(myClass.getField("str1"));
    }
    catch(Exception ex) {
      ex.printStackTrace();
    }
  }
  static class MyClass {
    private   String str0;
    public    String str1;
    protected String str2;
    private   int int0;
    public    int int1;
    protected int int2;
    private   boolean bool0;
    public    boolean bool1;
    protected boolean bool2;
  }
  private static void print(Field f) {
    L.p("field:"+f.toString());
  }

}
//---------------------------------------------------
//・目次 Javaエトセトラ
//  http://blogs.yahoo.co.jp/artery2020/40576157.html
//・目次 - Java入門
//  http://blogs.yahoo.co.jp/artery2020/39975776.html
//・目次 - ビジネスパーソンの常識と非常識
//  http://blogs.yahoo.co.jp/artery2020/39728331.html
//・目次 - 論理・発想・思考についての考察と鍛え方
//  http://blogs.yahoo.co.jp/artery2020/39657784.html
//---------------------------------------------------