• 类变量利用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美元给程序员,转身就去睡觉了。

  • 相关阅读:
    Ubuntu 12.10下为Firefox安装Adobe Flash Player
    oracle同时操作两个实例,如何进行切换操作?
    Ubuntu 12.10下为Firefox安装Adobe Flash Player
    Ubuntu11.10 安装oracle 11g
    oracle忘记system和sys账户的密码怎么办?
    linux 搭建java开发环境
    Oracle 笔记 day04
    节约网络带宽的设计策略
    集群化服务器
    01 基础概念(实战Linux Shell编程与服务器管理)
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3047906.html
Copyright © 2020-2023  润新知