编程练习。

来源:2-9 自由编程

sx1011

2020-09-08 22:27:47

package com.imooc.reflect;

import com.imooc.reflect.entity.Book;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/*
1)通过Constructor获得有参构造方法,并实例化Goods类的对象

2)获取当前类的所有成员变量,判断是public或者private修饰的,并进行输出。
 */
public class BookTest {
    public static void main(String[] args) {
        try {
            Class bookClass = Class.forName("com.imooc.reflect.entity.Book");
            Constructor constructor = bookClass.getConstructor(new Class[]{
                    Integer.class,String.class,Double.class
            });
            Book book = (Book)constructor.newInstance(new Object[]{
                    1011,"Java核心技术",50d
            });
            Field[] fields = bookClass.getDeclaredFields();
            for (Field field:fields){
                if(field.getModifiers()==1){
                    Object val = field.get(book);
                    System.out.println(field.getName() + ":" + val);
                }else if (field.getModifiers()==2){
                    String methodName = "get" + field.getName().substring(0,1).toUpperCase()
                            + field.getName().substring(1);
                    Method getMethod = bookClass.getMethod(methodName);
                    Object ret = getMethod.invoke(book);
                    System.out.println(field.getName() + ":" + ret);
                }
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
    }
}
package com.imooc.reflect.entity;
/*
1、创建图书类Book,类的结构如下:

1)私有属性:图书编号、图书名称;公有属性:图书价格

2)无参构造及带参构造

3)get和set方法

4)toString()方法
 */
public class Book {
    private Integer bno;
    private String bname;
    public Double bprice;

    public Book(){

    }
    public Book(Integer bno,String bname,Double bprice){
        this.setBname(bname);
        this.setBno(bno);
        this.setBprice(bprice);
    }

    public Integer getBno() {
        return bno;
    }

    public void setBno(Integer bno) {
        this.bno = bno;
    }

    public String getBname() {
        return bname;
    }

    public void setBname(String bname) {
        this.bname = bname;
    }

    public Double getBprice() {
        return bprice;
    }

    public void setBprice(Double bprice) {
        this.bprice = bprice;
    }

    @Override
    public String toString() {
        return "Book{" +
                "bno=" + bno +
                ", bname='" + bname + '\'' +
                ", bprice=" + bprice +
                '}';
    }
}


写回答

1回答

好帮手慕小尤

2020-09-09

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

如果我的回答解决了你的问题,请采纳,祝学习愉快.

0

0 学习 · 16556 问题

查看课程