反射の簡単な使用
4751 ワード
//
Class > cls =Class.forName("test.reflect.OperationAdd"); // Class
Constructor> cons [] = cls.getConstructors() ; //
for(int x = 0; x < cons.length; x++) {
System.out.println(cons[x]);
}
//
Constructor> con=cls.getConstructor(double.class,double.class);
Object ob=con.newInstance(1,2);
System.out.println(ob);
//
con=cls.getConstructor();
ob=con.newInstance();
System.out.println(ob);
//
Method setMet = cls.getMethod("method");
Method method2=cls.getMethod("method2",String.class,int.class);
setMet.invoke(ob);
method2.invoke(ob,"lance",666);
//
Field field [] = cls.getDeclaredFields() ;
for(int x = 0; x < field.length; x++) {
System.out.println(field[x]);
}
Field nameField = cls.getDeclaredField("name") ; // name
nameField.setAccessible(true) ; // , public
nameField.set(ob, " ") ; // Person .name = " "
System.out.println(nameField.get(ob)); // Person .name
public class OperationAdd implements Operation {
private String name;
private int num;
@Override
public double getResult(double a, double b) {
return a+b;
}
public OperationAdd(){
System.out.println(" ");
}
public OperationAdd(double a,double b){
System.out.println("a:"+a+",b"+b);
}
public void method(){
System.out.println(" ");
}
public void method2(String a,int b){
System.out.println(a+" "+b);
}
}