请老师检查
来源:2-9 自由编程
home_11
2021-05-31 18:27:49
Book.java
package pers.home11.reflect;
public class Book {
private Integer bookId;
private String bookName;
public Float price;
public Book() {
}
public Book(Integer bookId, String bookName, Float price) {
this.bookId = bookId;
this.bookName = bookName;
this.price = price;
}
public Integer getBookId() {
return bookId;
}
public void setBookId(Integer bookId) {
this.bookId = bookId;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public Float getPrice() {
return price;
}
public void setPrice(Float price) {
this.price = price;
}
@Override
public String toString() {
return "Book{" +
"bookId=" + bookId +
", bookName='" + bookName + '\'' +
", price=" + price +
'}';
}
}
BookReflectTest.java
package pers.home11.reflect;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class BookReflectTest {
public static void main(String[] args) {
try {
Class bookClass = Class.forName("pers.home11.reflect.Book");
Constructor bookConstructor = bookClass.getConstructor(new Class[]{
Integer.class, String.class, Float.class
});
Book book = (Book) bookConstructor.newInstance(new Object[]{
1, "Java编程思想", 79.0f
});
// getDeclaredFields获取所有属性(包括私有属性)
// getFields只获取公有所有属性
Field[] fields = bookClass.getDeclaredFields();
for(Field field: fields) {
if(field.getModifiers() == 1) {
System.out.println("public " + field.getType() + " " + field.getName() + ": " + field.get(book));
} else if(field.getModifiers() == 2) {
Method getMethod = bookClass.getMethod("get" + field.getName().substring(0, 1).toUpperCase() + field.getName().substring(1));
System.out.println("public " + field.getType() + " " + field.getName() + ": " + getMethod.invoke(book));
}
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
1回答
好帮手慕小尤
2021-05-31
同学你好,同学的代码完成的不错哦,很棒,继续加油~
祝学习愉快!
相似问题