在做UI(界面)的时候,我希望将界面上所有的控件都保存到属性文件中,如:有一个TextField,创建:(TextField text1 = new TextField("Name"));
     我希望在保存到属性文件的时候能把text1 这个控件的名称“text1 ”保存下来。换句话说,如果将一个对象  text1的名称取得/谢谢。

解决方案 »

  1.   

    变量名是不出现在编译后的文件当中的,就是说编译成class之后,"text1"就没有了,上哪找去。
      

  2.   

    用反射就可以完成
    /////////////////////////
    Class c = UI.class;
    Field[] fields = c.getDeclaredFields() ;
    for(int i = 0;i < fields.length ; i++) {
          String name = fields[i].getName(); //获得属性名
          //store name }
    能不能满足要求!
      

  3.   

    用Class内中的方法
    getDeclaredFields()
    这个方法可以遍历一个类中所有的成员变量名
      

  4.   

    变量名是不出现在编译后的文件当中的,就是说编译成class之后,"text1"就没有了,上哪找去。////////////////////////////////
    既然没有了,那我们创建一个对象后,调用其属性的时候是怎么工作的
      

  5.   

    text1只不过是一个变量名而已,并不属于对象的一部分,通过Java Runtime是没法得到的。
    除非这个变量是一个成员变量,可以通过它的对象来遍历
      

  6.   

    不能,否则的话,java.lang.Object里面就可以取到!你获得的已知对象本身(也就是new TextField("Name")这部分),位于堆之中,而他是没有实际名称的。拥有名字的是栈中的那个指针(也就是TextField text1这个),但是同一个对象可能有N(>=1)处引用,每一处的名字不尽相同。上面没有考虑到字段(Field)
    不过,即使字段能得到名字,那也是字段的名字,而不是已知对象的名字。
    当然,如果按照北极星的说法,可以得到某个对象是否就是某个字段,并借此得到名字。但这无论从运行效果还是从搂住的描述来看,都是不一样的。IDE之所以“能”是因为那段Java代码是他生成的,或者在打开这个java文件的时候读取并分析过的