zoukankan      html  css  js  c++  java
  • 关于Java中的反射的一个简单使用

    把以前在其他地方的技术文章重新整理一遍, 方便自己回忆, 也方便他人借鉴.

    刚工作的时候发过这么一段代码:

    package cn.com.hanbinit.test;
     
    import java.lang.reflect.Field;
    import java.util.ArrayList;
    import java.util.List;
     
    public class Test {
     
        public static void main(String[] args) throws IllegalArgumentException,
                Exception {
            Person p1 = new Person("111", "aaa");
            Person p2 = new Person("222", "bbb");
            List list = new ArrayList();
            list.add(p1);
            list.add(p2);
            test(list);        
        }
     
        public static void test(List list) throws Exception, IllegalAccessException {
            for (int i = 0; i < list.size(); i++) {
                Field[] fields = list.get(i).getClass().getDeclaredFields();
                Object oi = list.get(i);
                for (int j = 0; j < fields.length; j++) {
                    if(!fields[j].isAccessible()){
                        fields[j].setAccessible(true);
                    }            
                    System.out.println(fields[j].get(oi));
                }
            }
        }
    }

    这段代码只是运用了Java中的反射中的getDeclaredFields()方法获取了对象中的所有已经声明的对象(包括public和private).
    另外,isAccessible()方法可以返回返回反射对象的可访问标志的值.也就是说这个属性能否被其他对象访问(也就是看它是不是public属性的).
    setAccessible(boolean flag)可以为反射对象设置可访问标志,设置为true相当于将属性的访问修饰改为了public.

  • 相关阅读:
    (3.4)常用知识-char与varchar的选择
    (3.3)常用知识-索引使用、维护与填充因子
    (3.2)常用知识-字符串处理
    (3.1)常用知识-日期处理
    基于Sql Server 2008的分布式数据库的实践
    将expression转化为数据类型int时发生算术溢出错误
    webserver and application server
    web前端
    linkin
    jquery load
  • 原文地址:https://www.cnblogs.com/hanbin/p/4780609.html
Copyright © 2011-2022 走看看