请老师检查

来源: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

同学你好,同学的代码完成的不错哦,很棒,继续加油~

​祝学习愉快!

0

0 学习 · 16556 问题

查看课程