麻烦老师帮我看看为什么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方法。
祝学习愉快~
相似问题