Class <?> cls =Class.forName("test.reflect.OperationAdd");
Constructor<?> cons [] = cls.getConstructors() ;
for(int x = 0; x < cons.length; 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++)
Field nameField = cls.getDeclaredField("name") ;
nameField.setAccessible(true) ;
nameField.set(ob, "张三") ;
System.out.println(nameField.get(ob));
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);
}
}