java反射获取属性和属性类型,并且获取值

news/2024/7/24 12:02:00

结果:

代码:

public class ClassCheck {
    public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {
        User user = new User();
        user.setId(1L);
        user.setAge(5000);
        user.setName("中国");
        Company company = new Company();
        company.setId(1);
        company.setAddress("亚洲");
        checkClass(user);
    }

    public static void checkClass(Object object) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        //获取所有类的属性=
        Field[] fields = object.getClass().getDeclaredFields();
        //遍历所有属性
        for (int i = 0; i < fields.length; i++) {
            //设置可以访问私有变量
            fields[i].setAccessible(true);
            //获取属性类型
            String type = fields[i].getGenericType().toString();
            //获取属性名称
            String name = fields[i].getName();
            System.out.println("当前类型为:" + type + " 当前名称为:" + name);
                      
            StringBuilder stringBuilder = new StringBuilder(name);
            String str = name.substring(0,1).toUpperCase(Locale.ROOT);
            stringBuilder.replace(0,1,str);
            System.out.println("当前的属性名称为:" + stringBuilder);
            //endsWith是否一指定后缀为结尾
            if (type.endsWith("String")) {
                //获取get方法
                 Method method = t.getClass().getMethod("get" + stringBuilder);
                //通过get方法获取属性值
                String value = String.valueOf(method.invoke(object));
                System.out.println("get方法获取的值为:" + value);
            }
           

        }
    }
}
public class User {
    private Long id;
    private Integer age;
    private int shengao;
    private Byte sex;
    private String name;
    private String EName;
    private Company company;

    public int getShengao() {
        return shengao;
    }

    public void setShengao(int shengao) {
        this.shengao = shengao;
    }

    public String getEName() {
        return EName;
    }

    public void setEName(String EName) {
        this.EName = EName;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Byte getSex() {
        return sex;
    }

    public void setSex(Byte sex) {
        this.sex = sex;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Company getCompany() {
        return company;
    }

    public void setCompany(Company company) {
        this.company = company;
    }
}
public class Company {
    private Integer id;
    private String address;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

http://www.niftyadmin.cn/n/1728652.html

相关文章

格式化文件与eslint语法产生冲突解决办法

1.单双引号问题1.单双引号问题 在根目录下创建配置文件“.prettierrc”&#xff0c;把格式格式化为eslint要求的语法 {"semi": false,//去除分号“&#xff1b;”"singleQuote": true//把双引号格式化为单引号 }

mybatis-puls新增完以后返回id

你新增的实体.id 案例: villageInfo.setDeleteFlag(XrkConstant.DB_NOT_DELETED);villageInfo.setCreatedAt(new Date());villageInfo.setUpdatedAt(new Date());getBaseMapper().insert(villageInfo);//新增完以后Long villageId villageInfo.getId();//获取新增完以后id

汇编 align_C++ GCC 对象模型 从汇编代码分析虚函数、动态绑定原理 (Part 1)

写在前面&#xff08;本专栏仅是个人笔记本&#xff0c;有胡言乱语和错漏之处&#xff0c; &#xff09;这篇笔记结合汇编代码和fdump-class-hierarchy分析了GCC中多重继承下的对象在内存中的对象模型&#xff0c;以及虚函数表、动态绑定的底层实现。更具体的说&#xff0c;将一…

JAVA三目运算符(条件运算符)单层和多层

格式: 判断条件?条件成立结果:条件不成立结果 案例:有单层也有多成 public static void main(String[] args) {//多层三目运算符Scanner sc new Scanner(System.in);System.out.println("请输入你需要判断的整数:");int res sc.nextInt();//单层三目运算符Strin…

android charles 证书_日常开发神器之Charles基础使用

1&#xff1a;摘要在日常的的开发中&#xff0c;经常需要前端或者客户端与服务端进行配合、一起配合完成某个功能的开发&#xff0c;在这个过程中&#xff0c;服务端扮演的角色是为客户端提供数据接口&#xff0c;客户端在合适的时机通过调用服务端的接口获取到数据&#xff0c…

启动vue项目,报错Use // eslint-disable-next-line to ignore the next line. Use /* eslint-disable */ to ignor

解决办法: 将webpack.base.conf.js文件中的 …(config.dev.useEslint ? [createLintingRule()] : []),注释掉&#xff0c;重新启动项目即可 如果没有上面的文件&#xff0c;可以修改.eslintrc.js文件&#xff0c;&#xff08;改文件是代码规范配置项&#xff0c;注释掉’vue/…

ThreadLocal学习-介绍和简单案例

介绍: ThreadLocal是JDK包提供的&#xff0c;它提供线程本地变量&#xff0c;如果创建一个ThreadLocal变量&#xff0c;那么访问这个变量的每个线程都会有这个变量的一个副本&#xff0c;在实际多线程操作的时候&#xff0c;操作的是自己本地内存中的变量&#xff0c;从而规避…

pythonrequest_python之使用request模块发送post和get请求

import requestsimport json#发送get请求并得到结果# url ‘http://api.nnzhp.cn/api/user/stu_info?stu_name小黑马 ‘#请求接口# req requests.get(url)#发送请求# print(req.text)#获取请求&#xff0c;得到的是json格式# print(req.json())#获取请求&#xff0c;得到的是…