获取Field成员变量类

博客介绍了Java中位于java.lang.reflect.Field包的相关内容,包括获取成员变量修饰符、名字、类型的方法,以及获取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;
}

 

转载于:https://www.cnblogs.com/xixixing/p/9551718.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值