java如何查看某个类中被实例化的对象的名称(列表)?

例:
我在运行程序时,通过一个类Test,实例化了三个对象Alpha,Beta,Gamma。
有没有某种方法能直接列出 由该Test类实例化形成的对象的名称(Alpha,Beta,Gamma)
还是说没有这种方法,只能在Test类中建立一个列表进行存储?

不可以,Java的内存是封装不可访问的。虽说Sun写了访问内存的API,但他自己并没有实现。
换句话说,我们不知道内存中已经有了哪些实例化的对象,也就没法完成这个列表功能。

当然你自己实例化的时候建立列表是没有问题的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-04-14
import java.lang.reflect.Field;

Field[] fields = o.getClass().getDeclaredFields();
获得的数组里面存储了你想要的。。追问

不是列出Test类里面的域,是把通过这个类声明的对象的名称列出来

对于类Test,在Main方法中实例化三个对象:

Test Alpha=new Test;
Test Beta=new Test;
Test Gamma=new Test;

要求输出"Alpha","Beta","Gamma"
即通过Test类声明的这三个对象的名称

追答

main方法声明三个同一对象的名字。。。然后还要显示出来。。。
我表示我才疏学浅。。。
没办法

追问

上面写那声明有点问题,初始化时后面那个Test还要带参数。。。

不过我的大概意思已经说出来了。
那就只能在Test类里建立个静态域,每次声明并初始化时将对象名进行存储了?

第2个回答  2014-04-14
有这种方法!他叫做反射技术追问

。。。能麻烦写个代码说明一下么,谢了,java学得还没那么好

追答

做为一个程序员来说,我掌握的这点技术远远达不到你的要求,因为反射技术是java相对比较高深的技术,普通的程序员都很少掌握。他的强大在于只要有一个字符串,就可以用这个字符串通过反射,反向拿到一个相应的类、属性、对象、方法!很抱歉没能帮上你,不过给你指定了一条路。想学的话可以学一下

相似回答