如何获取java类中的变量名的字串
在类中定义了一个属性abc,如何获取这个变量的abc的名字串呢?也就是说怎么知道abc这个变量的名字是abc,这个问题比较的好玩。
这个是偶在一开发中遇到的一个比较有趣的问题,找 了半天的资料加下偶辛勤的思考,终于找到的解决方法。用反射~~~
java提供了很强大的反射机制,可以说比动态语言还动态。但是这个东东平时的应用不是很多的说。
现提供一个可以动态获取对象中的变量的变量名称的方法:
public class MyTools {
public static void setAllComponentsName(Object f) {
// 获取f对象对应类中的所有属性域
Field[] fields = f.getClass().getDeclaredFields();
for(int i = 0 , len = fields.length; i < len; i++) {
// 对于每个属性,获取属性名
String varName = fields[i].getName();
try {
// 获取原来的访问控制权限
boolean accessFlag = fields[i].isAccessible();
// 修改访问控制权限
fields[i].setAccessible(true);
// 获取在对象f中属性fields[i]对应的对象中的变量
Object o = fields[i].get(f);
System.out.println("传入的对象中包含一个如下的变量:" + varName + " = " + o);
// 恢复访问控制权限
fields[i].setAccessible(accessFlag);
} catch (IllegalArgumentException ex) {
ex.printStackTrace();
} catch (IllegalAccessException ex) {
ex.printStackTrace();
}
}
}
public static void main(String[] args)
{
// 测试代码用来获取一个JLabel中声名的所有的属性名和其属性变量
setAllComponentsName(new JLabel("测试"));
}
}
fields[i].setAccessible(true);这句主要是因为私有的变量在对象外是无法访问的,通过这个设置就可以改变私有变量的访问权,还真的有点恐怖,当偶把这个解决方法告诉Boss的时候,Boss差点吐血,私有的都能访问了,还有什么安全可言?
不过了,有安全就有特权,所以由于能很好的解决问题还是被采纳了,嘻嘻~~~
Object o = fields[i].get(f);这句的作用就是取得传入对象f中类的属�
相关文档:
为了使操作系统支持Java,可由Sun公司的Java下载网页, 根据操作系统类型下载和安装一个免费JRE(Java Runtime Environment), 例如, JRE6。然后, 将本文件下载保存, 拷贝, 并粘贴到JRE所在的security目录, 例如, C:/Program Files/Java/jre6/lib/security/, 替换原有的文件java.policy, 设置JRE完成。
......
别声明:这是一篇来自wudale的博客的文章http://wudale.bokee.com/3594651.html
Java是目前最流行的面向对象的变成语言之一,Java支UTF-8,ISO-8859-1、GBK等各种字体编码,可笔者发现Java中字体编码的问题仍困倒了不少程序员,网上虽然也� ......
JAVA代码编译后是.class文件,通过反编工具很容易被别人看到源代码
保护JAVA代码的方法很多,下面介绍一种比较方便使用的方法。
obfuscate4e是一款采用混淆器改变CLASS文件内容的方法。
下文将介绍具体和eclipse的整合方法
1.下载obfuscate4e,加入站点http://obfuscate4e.org/updates/,这个软件是德国人开� ......
//1.创建testdll.java文件
public class testdll
{
static
{
System.loadLibrary("goodluck");
}
public native static int get();
public native static void set(int i);
public static void main(String[] args)
{
testdll test = new testdll();
test.set(10);
System.out.println(test.get() ......
import java.net.*;
import java.io.*;
public class ReadDemo
{
public static void main(String argv[])
{
try
{
URL url = new URL("http://blog.chinaunix.net/u/15586/showart_1863289.html");
BufferedRe ......