public class ReflectDemo02 {
public static void main(String[] args) throws NoSuchMethodException,
SecurityException, InstantiationException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException {
// 1 找到像
Class<Book> clazz1 = Book.class;
//为了简化调用无参数构造函数,可以直接调用像的方法
Book book=clazz1.newInstance();
System.out.println(book);
//自己调用: 1)那个对象 2)那个方法 3)传的参数
//book.setName("dasb");
//2 找到方法,因为方法存在重载
Method m1=clazz1.getDeclaredMethod("setName", String.class);
//3 调用方法
m1.invoke(book, "dasb");
//System.out.println(book);
Method m2=clazz1.getDeclaredMethod("getName");
String ret=(String) m2.invoke(book);
System.out.println(ret);
}
}
public class ReflectDemo02 {
public static void main(String[] args) throws
InstantiationException, IllegalAccessException,
NoSuchFieldException, SecurityException {
// 1 找到像
Class<Book> clazz1 = Book.class;
//为了简化调用无参数构造函数,可以直接调用像的方法
Book book=clazz1.newInstance();
System.out.println(book);
//2 找到字段
Field f1=clazz1.getDeclaredField("name");
//3 赋值:如果是对象类型 set(object,value),如果基本类型
setBoolean 等
f1.setAccessible(true);
f1.set(book, "dasb");
//4 取值:对象类型调用 get,而基本类型 getBoolean
System.out.println(f1.get(book));
}
}