zoukankan      html  css  js  c++  java
  • 类变量利用Java反射获取类的私有变量值

    这两天笔者几篇文章介绍了改类变量的文章. 关联文章的地址

        从计划的准则说来,类的成员变量如果计划成private,那么我们就不能在类外部去获得到此private变量的值。平日的做法是供提此private变量的get 和set方法。但是如果这个类没有供提get和set方法,我们如何去获得到这个类的private成员变量呢?比如有这么一个类 Person:

    class Person{
    	private String name = "cross";
    }

        我们如何不在这个类中来获得到name的值呢?通过java的反射制机可以获得的,注意这里会对name这个field置设下field.setAccessible(true), 我们才能问访private变量

        每日一道理
    谁说人与人隔着遥远的重洋,谁说心与心设着坚固的堤防?十六岁的鸟儿飞上天空,总会找到落脚的枝头。
    package com.withiter.test;
    
    import java.lang.reflect.Field;
    
    public class ReflectTest {
    
    	public static void main(String[] args) {
    		try {
    			Class<?> obj = Class.forName("com.withiter.test.Person");
    			Field[] f = obj.getDeclaredFields();
    			for(Field field : f){
    				field.setAccessible(true);
    				System.out.println(field.getName()+":"+field.get(obj.newInstance()));
    			}
    		} catch (ClassNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IllegalArgumentException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IllegalAccessException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (InstantiationException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    }
    
    class Person{
    	private String name = "cross";
    }

        

    文章结束给大家分享下程序员的一些笑话语录: 打赌
    飞机上,一位工程师和一位程序员坐在一起。程序员问工程师是否乐意和他一起玩一种有趣的游戏。工程师想睡觉,于是他很有礼貌地拒绝了,转身要睡觉。程序员坚持要玩并解释说这是一个非常有趣的游戏:"我问你一个问题,如果你不知道答案,我付你5美元。然后你问我一个问题,如果我答不上来,我付你5美元。"然而,工程师又很有礼貌地拒绝了,又要去睡觉。  程序员这时有些着急了,他说:"好吧,如果你不知道答案,你付5美元;如果我不知道答案,我付50美元。"果然,这的确起了作用,工程师答应了。程序员就问:"从地球到月球有多远?"工程师一句话也没有说,给了程序员5美元。  现在轮到工程师了,他问程序员:"什么上山时有三条腿,下山却有四条腿?"程序员很吃惊地看着工程师,拿出他的便携式电脑,查找里面的资料,过了半个小时,他叫醒工程师并给了工程师50美元。工程师很礼貌地接过钱又要去睡觉。程序员有些恼怒,问:"那么答案是什么呢?"工程师什么也没有说,掏出钱包,拿出5美元给程序员,转身就去睡觉了。

  • 相关阅读:
    django 项目需要注意的一些点
    VUE之路
    Oracle 表格碎片的查看方法
    RHEL 6.x or 7.x 使用分区绑定ASM 磁盘的方法
    RMAN 修复主库 nologging 操作导致物理备库的坏块
    Oracle 数据库19c 回退降级到 11.2.0.4 方案
    如何评估oracle 数据库rman全备和增量备份大小
    在将Oracle GI和DB升级到19c或降级到以前的版本之前需要应用的补丁 (Doc ID 2668071.1)
    Oracle 数据库坏块处理
    opatch auto 安装11.2.0.4.20190115 PSU遇到 OUI-67133: Execution of PRE script failed,with returen value 1 报错
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3047906.html
Copyright © 2011-2022 走看看