zoukankan      html  css  js  c++  java
  • 获取Field成员变量类

    位于java.lang.reflect.Field包中

    getModifiers() 成员变量修饰符(public、private)

    getName() 成员变量名字

    getType() 成员变量类型

    【获取Field成员变量类】

    class.getFields()  获取所有public公有成员变量

    class.getField(String name)  获取指定的public公有成员变量

    class.getDeclaredFields()  获取所有成员变量

    class.getDeclaredFields(String name)  获取指定的成员变量

    【获取变量值】【修改变量值,把以下get换成set】

    get(Object obj)

    getBoolean(Object obj)

    getByte(Object obj)

    getChar(Object obj)

    getDouble(Object obj)

    getInt(Object obj)

    getLong(Object obj)

    getShort(Object obj)

       

    public class Demo {
        public static void main(String[] args) {
            try {
                Class c=Class.forName("Example");//创建Class对象
                Field fs[]=c.getDeclaredFields();//获取所有变量
                for(Field f:fs){
                    System.out.print(Modifier.toString(f.getModifiers()));//修饰符
                    System.out.print(" "+f.getType().getSimpleName());//变量的类型
                    System.out.println(" "+f.getName());//变量的名字
                }
                //获取变量的值
                //Example中无任何构造方法,但java会自动生成无参数构造方法。
    //            Constructor cs=c.getDeclaredConstructor();//直接用,获取Example中无参数构造方法
    //            Object obj=cs.newInstance();//实例化
                Object obj=c.newInstance();//实例化Example
                Field f=c.getDeclaredField("name");//获取Example中变量name
                System.out.println(f.get(obj));//获取值
                Field f1=c.getDeclaredField("price");//获取变量name
                f1.setAccessible(true);//private变量要获取权限
                System.out.println(f1.get(obj));
                f1.set(obj,-3.14);//修改price值
                System.out.println(f1.get(obj));
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InstantiationException e) {
                e.printStackTrace();
            } catch (NoSuchFieldException e) {
                e.printStackTrace();
            }
        }
    }
    public class Example {
        public int id=5;
        public String name="反射";
        private double price=3.14;
    }
  • 相关阅读:
    linux部署docker镜像
    SpringBoot 定时任务篇
    POST形式 soapUI调用WebService的restful接口,传入json参数,并且返回json
    Java操作FTP工具类(实例详解)
    MyBatis逆向工程:根据table生成Model、Mapper、Mapper.xml
    Netty完成网络通信(二)
    NIO完成网络通信(一)
    MySQL5.6数据库8小时内无请求自动断开连接
    Eclipse集成Tomcat插件(特别简单)
    程序从sqlserver2008搬家到MySQL5.6
  • 原文地址:https://www.cnblogs.com/xixixing/p/9551718.html
Copyright © 2011-2022 走看看