遇到了一个很奇葩的问题?

这是我的代码:
Person person = new Person();
Person person2 = new Person();
有没有什么办法获取“person”和“person2”这两个实例的实例名称啊?
知道你们掉大的一天天很忙的,但是我真的是没办法了啊,所以还得麻烦一下啊。

7个回答

context.getBean()方法获取对象时,怎么初始化对象的属性取决于你的配置。
配置里将属性beanName的值初始化为"awareService",那么每个用getBean()获得的对象的beanName都是"awareService",这个与变量名无关。
getClass()获取的信息都是类的信息,这里你是无法找到某个对象的信息的,toString()获取的是class的文件路径。
至于如何获取一个变量的名称,我是这么认为的,从java编译出的.class文件里看已经不存在变量名称的信息了,所以api是没有提供获取变量名的方法的,只能自己写个方法,手动赋值来保留变量名的信息。

smallSBoy
smallSBoy 我刚才也试了下,我第一个也就是凑巧跟容器初始化的名称一样,不管怎么改这个都不会影响BeanNamed的。说的很好,钻进死胡同了,浪费我好多时间啊。好气啊。。。
接近 3 年之前 回复

话说能给个例子吗,要获取的是啥?如果获取类名是person.getClass();
如果person和person2是哪个类的属性,用反射。
比如 class P{Person person,person2;},
Field[]a = P.class.getFields();就可以获取这两个person属性了

在Java中,每个class都有一个相应的Class对象。也就是说,当我们编写一个类,编译完成后,在生成的.class文件中,就会产生一个Class对象,用于表示这个类的类型信息
获取Class实例的三种方式:
(1)利用对象调用getClass()方法获取该对象的Class实例;
(2)使用Class类的静态方法forName(),用类的名字获取一个Class实例(staticClass forName(String className) Returns the Classobject associated with the class or interface with the given stringname. );
(3)运用.class的方式来获取Class实例,对于基本数据类型的封装类,还可以采用.TYPE来获取相对应的基本数据类型的Class实例

图片说明

图片说明

图片说明

这块要是不这么写获取到的Bean还是之前的awareService而不是新声明的anjunAwareService,这么写了还是不对,就不知道怎么写了。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问