老师看看我的回答如何有需要改进的地方吗
来源:3-7 自由编程
Wonwayshon
2021-01-05 09:13:04
package com.imooc.reflect.project;
public class Book {
//私有属性:图书编号、图书名称;公有属性:图书价格
private Integer id; //图书编号
private String name; //图书名称
public double price; //图书价格
//无参构造及带参构造
public Book(Integer id, String name, double price) {
super();
this.id = id;
this.name = name;
this.price = price;
}
public Book() {
super();
}
//toString()方法
@Override
public String toString() {
return "Book [id=" + id + ", name=" + name + ", price=" + price + "]";
}
//没有get和set方法
}
package com.imooc.reflect.project;
import java.lang.reflect.Field;
import org.junit.Test;
public class FieldTest {
//通过Field获得图书名称属性,为图书名称设置新值并输出
@Test
public void demo1() throws Exception {
Class clazz=Class.forName("com.imooc.reflect.project.Book");
Field nameField=clazz.getDeclaredField("name");
nameField.setAccessible(true);
Book book=(Book)clazz.newInstance();
nameField.set(book, "流浪苍穹");
System.out.println(nameField.get(book));
System.out.println(book);
}
//通过Field获得图书价格属性,为图书价格设置新值并输出
@Test
public void demo2() throws Exception {
Class clazz=Class.forName("com.imooc.reflect.project.Book");
Field priceField=clazz.getField("price");
Book book=(Book) clazz.newInstance();
priceField.set(book, 39.9);
System.out.println(priceField.get(book));
System.out.println(book);
}
}
1回答
同学你好,代码完成正确,没有要修改的地方,加油。
祝学习愉快!
相似问题
回答 1
回答 1