A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨玲 中级黑马   /  2013-2-20 11:18  /  2603 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

问题差不多是这样的。现在我有一个类。我用他创建了几个对象,比如:
  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. */
复制代码
用办法做到吗?



评分

参与人数 1技术分 +1 收起 理由
李培根 + 1 赞一个!

查看全部评分

11 个回复

倒序浏览
办不到,这只是一个引用,如果你想标识是哪个对象,完全可以手动在打印语句中添加。
回复 使用道具 举报
本帖最后由 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:38
办不到,这只是一个引用,如果你想标识是哪个对象,完全可以手动在打印语句中添加。 ...

呵呵,我只是觉得应该有这种需求吧,既然有需求也应该有办法做到才是呀。
回复 使用道具 举报
zhangjinyu1991 发表于 2013-2-20 11:56
你要保证类中有对象名这个属性呀
    public class Demo
    {

呵呵,这也算是一个解决方法,谢谢!不过这样我的代码要改的就太多了,再等等!嘿嘿
回复 使用道具 举报
杨玲 中级黑马 2013-2-20 12:15:18
7#
王亚东 发表于 2013-2-20 11:59
很容易想到反射,但是只能得到类型,至于变量名,是你自己可随意写的,反射也无法做到。 ...

呵呵,就是说嘛,应该是有这种应用的,
回复 使用道具 举报
杨玲 发表于 2013-2-20 12:15
呵呵,就是说嘛,应该是有这种应用的,

得到了通知一下!!!
回复 使用道具 举报
杨玲 中级黑马 2013-2-20 15:24:25
9#
黑马-王言龙 发表于 2013-2-20 14:40
得到了通知一下!!!

呵呵,暂时就只有2楼的方法,在类中定义一个变量来记住。。。
回复 使用道具 举报
杨玲 发表于 2013-2-20 15:24
呵呵,暂时就只有2楼的方法,在类中定义一个变量来记住。。。

不错!不错。
回复 使用道具 举报
用枚举吧,它里面的实例成员,都有name属性标识它们
回复 使用道具 举报
这么牛的大神
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马