//------------------------------------------------我是代码的分割线

// 首选是一个工具类,在该工具类里面,定义了一个方法,public void setProperty (Object obj, String propertyName, Object value)

// Object obj:所要使用的字节码class对象,String propertyName:所要获取对象的propertyName成员变量,Object value :给对象的成员变量赋值为指定的值--->value

// 就介绍到这里,直接上代码:首选是反射的工具类

 import java.lang.reflect.Field;

 public class Tool {
public void setProperty(Object obj, String propertyName, Object value)
throws NoSuchFieldException, SecurityException,
IllegalArgumentException, IllegalAccessException {
// 根绝对象获取字节码文件
Class c = obj.getClass();
// 获取该对象的propertyName成员变量
Field field = c.getDeclaredField(propertyName); //注意你是通过参数来获取,不许加双引号“”
// 取消访问检查
field.setAccessible(true);
// 给对象的成员变量赋值为指定的值--->value
field.set(obj, value);
}
}

//-------------------------------------------

//下面的是测试类,就是使用该工具类,经参数传递过去。。。

 public class ToolDemo {
public static void main(String[] args) throws NoSuchFieldException,
SecurityException, IllegalArgumentException, IllegalAccessException {
Person p = new Person(); Tool tool = new Tool();
tool.setProperty(p, "name", "java");
tool.setProperty(p, "age", 20); System.out.println(p);
System.out.println("---------");
Dog d = new Dog();
tool.setProperty(d, "sex", '男');
tool.setProperty(d, "price", 12.34f);
System.out.println(d);
}
}
class Dog{
private char sex;
float price; public String toString() {
return sex + "---" + price;
}
}
class Person { private String name; // 此处name是私有的,外界是无法访问的。
public int age; @Override
public String toString() {
return name + "---" + age;
}
}

java中使用反射做一个工具类,来为指定类中的成员变量进行赋值操作,使用与多个类对象的成员变量的赋值。的更多相关文章

  1. java中使用反射往一个泛型是Integer类型的ArrayList中添加字符串,反射的案例1.

    //------------------------- //废话不多说,直接上代码.代码里面添加了详细的解释. import java.lang.reflect.Constructor; import ...

  2. 关于Java中的反射的一个简单使用

    把以前在其他地方的技术文章重新整理一遍, 方便自己回忆, 也方便他人借鉴. 刚工作的时候发过这么一段代码: package cn.com.hanbinit.test; import java.lang ...

  3. arcengine自己做一个工具Tool放到工具箱中

    // Copyright 2010 ESRI // // All rights reserved under the copyright laws of the United States // an ...

  4. myeclipse跟eclipse中使用github做版本控制工具

    今天早上花了一上午的时间,了解了在myeclipse跟eclipse中使用github. 好吧 说说怎么做的,让大伙少走一点路,我就简单描述下,需要软件的私信我 第一:下载git 第二:靠谱.但是pu ...

  5. java main()线程是不是最后一个退出的(相比较main中创建的其他多个线程)

    JVM会在所有的非守护线程(用户线程)执行完毕后退出: main线程是用户线程: 仅有main线程一个用户线程执行完毕,不能决定JVM是否退出,也即是说main线程并不一定是最后一个退出的线程. pu ...

  6. Nginx系列篇三:linux中Nginx+keepalived做一个高可用的主从配置

    建议:先阅读搭建Nginx负载均衡之后再看此篇 备注: Nginx+keepalived的高可用有两种方式 一.主从配置 二.双主热备配置[下一篇] 准备: 标配四台服务器 Master:192.16 ...

  7. File类之在指定目录中查找文件

    package IoDemo; import java.io.File; /** * @Title:FileDemo2 * @Description:在指定的目录中查找文件 * @author Cra ...

  8. 利用detours写了一个工具用于instrument任意指定dll的任意指定函数入口

    目录 wiki Disas Dtest Simple withdll load一个dll到指定进程 tracebld显示相关进程涉及的文件读写操作 My Instrumentation tool: w ...

  9. 输入整数n(n<=10000),表示接下来将会输入n个实数,将这n个实数存入数组a中。请定义一个数组拷贝函数将数组a中的n个数拷贝到数组b中。

    代码一大串! #include<stdio.h> ],y[]; void arraycopy (double c[],double d[],int m); { ;i<=m;i++) ...

随机推荐

  1. 微信公众平台开发(99) 自定义菜单获取OpenID

    关键字 微信公众平台 自定义菜单 OpenID作者:方倍工作室原文:http://www.cnblogs.com/txw1958/p/weixin-menu-get-openid.html 在这篇微信 ...

  2. [MySQL] 变量(参数)的查看和设置

    类似于Oracle的参数文件,MySQL的选项文件(如my.cnf)用于配置MySQL服务器,但和Oracle叫法不一样,在MySQL里, 官方叫变量(Varialbes),但其实叫参数也是可以的,只 ...

  3. Linux 安装php

    安装libxml2 下载解压 libxml2-2.6.32.tar.gz 安装 ./configure --prefix=/usr/local/libxml2makesudo make install ...

  4. myeclipse WIN7下设置字体列表中无Courier New

    到"C:\Windows\Fonts"下找到对应的字体,单击,选择上面的显示 然后就可以在eclicpse字体设置里面看到Courier New项了: Eclipse字体设置方法: ...

  5. D3D9 GPU Hacks (转载)

    D3D9 GPU Hacks I’ve been trying to catch up what hacks GPU vendors have exposed in Direct3D9, and tu ...

  6. 浅谈My SQL引擎的对比

    MySQL数 据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译MYSQL.在缺省情况下,MYSQL支持三个引擎:ISAM.MYISAM和HEAP.另外两种类型IN ...

  7. 数据库调优过程(二):找到IO不存在问题,而是sqlserver单表写入IO瓶颈

    物理机上测试IO是否为瓶颈: 使用一个死循环insert into测试数据库最大写入速度: use [iTest]; declare @index int; ; begin ; INSERT into ...

  8. 《30天自制操作系统》07_day_学习笔记

    harib04a: P126    获取按键编码: 让程序在按下键盘的键之后,将键值编码显示出来 修改的是前面编写的鼠标按键的处理键盘中断的函数inthandler21() 这里笔者介绍了怎样把中断号 ...

  9. iOS中model出来一个控制器的尺寸怎么设置?

    在xib的控制器里添加self.preferredContentSize = CGSizeMake( , ) 就能修改xib在界面上显示的大小- (void)viewDidLoad { [super ...

  10. PostgreSQL pg_dump pg_dumpall and restore

    pg_dump dumps a database as a text file or to other formats. Usage: pg_dump [OPTION]... [DBNAME] Gen ...