zoukankan      html  css  js  c++  java
  • java 使用反射操作字段

    Field提供两组方法操作字段:

    xxx getXxx(Object obj):获取obj对象该Field的字段值,此处的xxx表示8个基本数据类型。若该字段的类型是引用数据类型则使用,Object get(Object obj);

    void setXxx(Object obj,xxx val):将obj对象的该Field字段设置成val值,此处的xxx表示8个基本数据类型。若该字段的类型是引用数据类型则使用,void set(Object obj, Object value);

     

    package junereflect624;

    //获取字符,并且赋值,然后再取出来(对应的去查看api,比如这个是Field,别的比如Constructor,Method)

    步骤:

    1.获取类

    2.获取字段

    3.赋值(set(c.newInstance(),””));{如果为私有的话设置可接受}

    import java.lang.reflect.Field;

    class Cat{

        private String name;

        public int age;

        private String color;

    }

    public class FieldDemo12 {

        public static void main(String[] args) throws Exception {

            Class<Cat> clz = Cat.class;

            Field[] f = clz.getDeclaredFields();

           

            for (Field field : f) {

                System.out.println(field);

            }

           

            Field fi = clz.getDeclaredField("name");

            System.out.println(fi);

           

            System.out.println(fi.getName());//name

           

            //核心开始

            /**

             *  void set(Object obj, Object value)

    将指定对象变量上此 Field 对象表示的字段设置为指定的新值。

             */

            Cat c = clz.newInstance();

            fi.setAccessible(true);

            fi.set(c, "刘昭");//赋值成功

            Object o = fi.get(c);

            System.out.println(o);//取出成功

           

            fi = clz.getDeclaredField("age");

            fi.setAccessible(true);

            fi.set(c, 21);

            int i = fi.getInt(c);//左边的接受类型已经写成了int,右边的返回类型就也必须是int

            System.out.println(i);//获取成功

        }

    }

    打印

    private java.lang.String junereflect624.Cat.name

    public int junereflect624.Cat.age

    private java.lang.String junereflect624.Cat.color

    private java.lang.String junereflect624.Cat.name

    name

    刘昭

    21

  • 相关阅读:
    nodejs访问mysql数据库工具ali-mysql-client
    谈谈数据监听observable的实现
    【开源】分享一个前后端分离方案-前端angularjs+requirejs+dhtmlx 后端asp.net webapi
    我的微型工作流引擎-办公应用实战
    我的微型工作流引擎-功能解析及API设计
    我的微型工作流引擎设计
    给Asp.Net MVC及WebApi添加路由优先级
    通用的业务编码规则设计实现
    快速开发之代码生成器(asp.net mvc4 + easyui + knockoutjs)
    利用CSS预处理技术实现项目换肤功能(less css + asp.net mvc4.0 bundle)
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11136847.html
Copyright © 2011-2022 走看看