JAva反射アクセスメンバー変数

1374 ワード

クラス:
public class Phone {   
    int size = 15;   
    public float price = 2111.2f;   
    protected boolean good = true;   
   // private String brand = "iphone";   
}

 
呼び出し:
import java.lang.reflect.Field;   
public class Test {
    public static void main(String[] args) throws Exception{   
        Phone p = new Phone();   
        
        Class c = p.getClass();   
       
        Field[] declaredFields = c.getDeclaredFields();
        //    
        for(int i = 0; i < declaredFields.length; i++) {   
            //    
            Field field = declaredFields[i];   

            //    
            System.out.print(" :" + field.getName()+"\t");   
            
            //    
            Class fieldType = field.getType();   
            System.out.println(" :" + fieldType);
            
            // field 
            System.out.println(" \t"+field.get(p));  
        }   
    }   
}

 
結果:
 :size	 :int
 	15
 :price	 :float
 	2111.2
 :good	 :boolean
 	true

 
注意:
プライベート変数にアクセスすると例外が放出されます!