描述
java通过反射设置某个类的属性时会自动类型强转,如果强转时类型不匹配会抛出异常。
示例
public class User {
public String name;
public int age;
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
@Test
public void test() throws Exception {
Class<User> userClass = User.class;
User user = userClass.newInstance();
Field name = userClass.getDeclaredField("name");
name.set(user,"user");
Field age = userClass.getDeclaredField("age");
age.set(user,20);//运行成功
//age.set(user,"20");//运行失败:java.lang.IllegalArgumentException: Can not set int field to java.lang.String
System.out.println(user);
}