博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用java基础反射访问私有域、方法和构造函数
阅读量:6816 次
发布时间:2019-06-26

本文共 1489 字,大约阅读时间需要 4 分钟。

hot3.png

1、类

public class ConfigData {

    private Map<String, String> configs = null;
    private final String fileName = "config.xml";
    private static ConfigData instance;
    private ConfigData() {
    }
    public static ConfigData getInstance() {
        if (instance == null) {
            instance = new ConfigData();
        }
        return instance;
    }
    private void init() {
        configs = XmlResouceUtils.getAllElements(fileName);
    }
    public void addTags(String... tagNames) {
        if(tagNames==null||tagNames.length==0){
            return;
        }
        String value = XmlResouceUtils.getXmlValue(fileName, tagNames);
        StringBuffer strBuf = new StringBuffer();
        for (String str : tagNames) {
            strBuf.append(str + "_");
        }
        strBuf.deleteCharAt(strBuf.length() - 1);
        configs.put(strBuf.toString(), value);
    }
    public String getValueByTag(String tagName) {
        String string = configs.get(tagName);
        return string;
    }
    public Map<String, String> getAll() {
        return this.configs;
    }
}
2、访问方式

    public void testCofingData() throws Exception {
        Class<?> clazz = Class.forName("com.hoolai.basketball.resources.ConfigData");
        Method method = clazz.getDeclaredMethod("init");
        method.setAccessible(true);
        Field declaredField = clazz.getDeclaredField("configs");
        declaredField.setAccessible(true);
        Constructor<?> constructor = clazz.getDeclaredConstructor();
        constructor.setAccessible(true);
        Object instance = constructor.newInstance();
        method.invoke(instance);
        Map<String, String> map = (Map<String, String>) declaredField.get(instance);
        printMap(map);//打印map
  
    }

转载于:https://my.oschina.net/mutianya/blog/163484

你可能感兴趣的文章
我的友情链接
查看>>
面试宝典系列-Hash碰撞是什么?
查看>>
我的友情链接
查看>>
Web 实时推送技术的总结
查看>>
OPENCV 使用系列 JAVA入门 之搭建环境
查看>>
Crypto API 学习
查看>>
EXTJS在IE9下出现兼容性问题
查看>>
thinkphp5 多图片拖拽上传,自己写的,不足之处请指正~
查看>>
将Unicon字符串转成汉字String C#
查看>>
Centos 6.7 4TB 硬盘LVM 水平扩容
查看>>
maven 与多模块构建
查看>>
ubuntu14.04 配置tomcat8
查看>>
VirtualBox体验及介绍
查看>>
Ubuntu 12.04 下安装 JDK 7
查看>>
1&gt;s.cpp(465) : error C2448: “main”: 函数样式初始值设定项类似函数定义 问题的解决方法...
查看>>
XWifiMouse早期写的一个Android鼠标App
查看>>
postgres预写式日志的内核实现详解-wal记录写入
查看>>
用面向接口编程思想看找对象
查看>>
OC文件操作习题
查看>>
Nginx常用命令
查看>>