如果取得已知对象的名称(不是类型,而是对象的名称) 在做UI(界面)的时候,我希望将界面上所有的控件都保存到属性文件中,如:有一个TextField,创建:(TextField text1 = new TextField("Name")); 我希望在保存到属性文件的时候能把text1 这个控件的名称“text1 ”保存下来。换句话说,如果将一个对象 text1的名称取得/谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 变量名是不出现在编译后的文件当中的,就是说编译成class之后,"text1"就没有了,上哪找去。 用反射就可以完成/////////////////////////Class c = UI.class;Field[] fields = c.getDeclaredFields() ;for(int i = 0;i < fields.length ; i++) { String name = fields[i].getName(); //获得属性名 //store name }能不能满足要求! 用Class内中的方法getDeclaredFields()这个方法可以遍历一个类中所有的成员变量名 变量名是不出现在编译后的文件当中的,就是说编译成class之后,"text1"就没有了,上哪找去。////////////////////////////////既然没有了,那我们创建一个对象后,调用其属性的时候是怎么工作的 text1只不过是一个变量名而已,并不属于对象的一部分,通过Java Runtime是没法得到的。除非这个变量是一个成员变量,可以通过它的对象来遍历 不能,否则的话,java.lang.Object里面就可以取到!你获得的已知对象本身(也就是new TextField("Name")这部分),位于堆之中,而他是没有实际名称的。拥有名字的是栈中的那个指针(也就是TextField text1这个),但是同一个对象可能有N(>=1)处引用,每一处的名字不尽相同。上面没有考虑到字段(Field)不过,即使字段能得到名字,那也是字段的名字,而不是已知对象的名字。当然,如果按照北极星的说法,可以得到某个对象是否就是某个字段,并借此得到名字。但这无论从运行效果还是从搂住的描述来看,都是不一样的。IDE之所以“能”是因为那段Java代码是他生成的,或者在打开这个java文件的时候读取并分析过的 java读取扩展名为.log文件总是隔行读取,如何实现全部读取。 Map求助 myEclipse 进程中出现两个 javaw 进程 请问如何为每一个文本框绑定一个按钮 最后一次提问!请高手来帮下!前面问了几次都没好的解答 用SWT如何 实现类似于eclipse中的欢迎界面 问:如何将自己的包添加到已存的包中(详述如下) 请问:在Jbuilder8中学习Applet的问题,谢谢! 字符串的拖运是如何实现的? 谁有www.sun.com的帐号--给一个--小弟没法注册-想去下forte for java2.0 2003系统下安装jdk1.4.1也需要配置环境变量吗? 字符输出问题
/////////////////////////
Class c = UI.class;
Field[] fields = c.getDeclaredFields() ;
for(int i = 0;i < fields.length ; i++) {
String name = fields[i].getName(); //获得属性名
//store name }
能不能满足要求!
getDeclaredFields()
这个方法可以遍历一个类中所有的成员变量名
既然没有了,那我们创建一个对象后,调用其属性的时候是怎么工作的
除非这个变量是一个成员变量,可以通过它的对象来遍历
不过,即使字段能得到名字,那也是字段的名字,而不是已知对象的名字。
当然,如果按照北极星的说法,可以得到某个对象是否就是某个字段,并借此得到名字。但这无论从运行效果还是从搂住的描述来看,都是不一样的。IDE之所以“能”是因为那段Java代码是他生成的,或者在打开这个java文件的时候读取并分析过的