黑马程序员技术交流社区

标题: 请问下如何获得某个变量的变量名, [打印本页]

作者: 杨玲    时间: 2013-2-20 11:18
标题: 请问下如何获得某个变量的变量名,
问题差不多是这样的。现在我有一个类。我用他创建了几个对象,比如:
  1. public class Demo
  2. {
  3. }
  4. Demo demo1 = new demo();
  5. Demo demo2 = new demo();
复制代码
为了更好的说明问题,假设我覆写了其中的toString方法。那么有没有可能在toString方法中得到调用它的对象的名字呢?比如:
  1. public String toString()
  2. {
  3.    return 变量名 +其他;
  4. }
复制代码
以使得在我打印demo1,demo2的时候,其结果像下面这样:
  1. System.out.println(demo1);
  2. System.out.println(demo2);
  3. /*结果:
  4. demo1其他
  5. demo2其他
  6. */
复制代码
用办法做到吗?




作者: 黑马-王言龙    时间: 2013-2-20 11:38
办不到,这只是一个引用,如果你想标识是哪个对象,完全可以手动在打印语句中添加。
作者: 张晋瑜    时间: 2013-2-20 11:56
本帖最后由 zhangjinyu1991 于 2013-2-20 11:57 编辑

    你要保证类中有对象名这个属性呀
    public class Demo
    {
            private String name;

            public Demo(String name){
                   this.name=name;
            }
    }
    Demo demo1 = new demo(“D1”);
    Demo demo2 = new demo("D2");


作者: 王亚东    时间: 2013-2-20 11:59
很容易想到反射,但是只能得到类型,至于变量名,是你自己可随意写的,反射也无法做到。
作者: 杨玲    时间: 2013-2-20 12:11
黑马-王言龙 发表于 2013-2-20 11:38
办不到,这只是一个引用,如果你想标识是哪个对象,完全可以手动在打印语句中添加。 ...

呵呵,我只是觉得应该有这种需求吧,既然有需求也应该有办法做到才是呀。
作者: 杨玲    时间: 2013-2-20 12:14
zhangjinyu1991 发表于 2013-2-20 11:56
你要保证类中有对象名这个属性呀
    public class Demo
    {

呵呵,这也算是一个解决方法,谢谢!不过这样我的代码要改的就太多了,再等等!嘿嘿
作者: 杨玲    时间: 2013-2-20 12:15
王亚东 发表于 2013-2-20 11:59
很容易想到反射,但是只能得到类型,至于变量名,是你自己可随意写的,反射也无法做到。 ...

呵呵,就是说嘛,应该是有这种应用的,
作者: 黑马-王言龙    时间: 2013-2-20 14:40
杨玲 发表于 2013-2-20 12:15
呵呵,就是说嘛,应该是有这种应用的,

得到了通知一下!!!
作者: 杨玲    时间: 2013-2-20 15:24
黑马-王言龙 发表于 2013-2-20 14:40
得到了通知一下!!!

呵呵,暂时就只有2楼的方法,在类中定义一个变量来记住。。。
作者: 黑马-王言龙    时间: 2013-2-21 10:48
杨玲 发表于 2013-2-20 15:24
呵呵,暂时就只有2楼的方法,在类中定义一个变量来记住。。。

不错!不错。
作者: 黑马-王言龙    时间: 2013-2-21 11:04
用枚举吧,它里面的实例成员,都有name属性标识它们
作者: 位喜    时间: 2015-3-23 22:30
这么牛的大神




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2