麻烦老师帮我看看为什么12行报错
来源:3-7 自由编程
不停奔跑的小恐龙
2019-11-04 10:49:29
package fanshe;
import java.lang.reflect.Field;
import org.junit.Test;
public class BookTest {
@Test
public void test() throws Exception {
Class class1=Class.forName("fanshe.Book");
Field field1=class1.getField("name");
Book book=(Book)class1.newInstance();
field1.setAccessible(true);
field1.set(book, "光明世界");
System.out.println(book);
Object obj=field1.get(book);
System.out.println(obj);
}
@Test
public void test2() throws Exception {
Class class2=Class.forName("fanshe.Book");
Field field2=class2.getDeclaredField("price");
Book book2=(Book)class2.newInstance();
field2.set(book2, 69);
System.out.println(field2.get(book2));
}
}package fanshe;
public class Book {
private int num;
private String name;
public float price;
public Book() {}
public Book(int num, String name, float price) {
super();
this.num = num;
this.name = name;
this.price = price;
}
@Override
public String toString() {
return "Book [num=" + num + ", name=" + name + ", price=" + price + "]";
}
}1回答
芝芝兰兰
2019-11-04
同学你好。getField方法只能获取public的属性,因为name属性是private私有的,所以无法获取,会产生NoSuchFieldException。可以使用getDeclaredField来代替getField方法。
祝学习愉快~
相似问题