麻烦老师帮我看看为什么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方法。

祝学习愉快~

0

0 学习 · 8016 问题

查看课程