如何在Java中将对象名称转换为字符串



我想从对象的名称中创建一个字符串

例如:

Object objectName = new Object;

现在我想要一个由对象的名字组成的字符串这样我就可以打印它了

System.out.println(stringWithObjectName); \ print objectName

你是怎么做到的?

那是…不是这样的。您对java的工作原理有一个根本性的误解。:

Object name = new Object();

你做了不是刚刚创建了一个名为name的新对象。不,你做了三件完全不同的事情:

  1. 您创建了一个名为name的Object类型变量。这就像一张白纸,你可以在上面画藏宝图。这是Object name;部分

  2. 您创建了一个新对象。(new Object()部分)。它没有名字。这就像创造了一个新的宝箱,然后把它埋在沙子里。

  3. 你已经在你的藏宝图上绘制了通往你刚刚埋藏的宝藏的路线(即中间部分的=)。

你现在可以撕毁你的藏宝图(name = null-在那里,消灭了地图!),但宝藏仍然在那里,埋在沙子里。如果不存在X标记该宝藏的其他藏宝图,最终垃圾收集器将挖掘并处理它。

换句话说,对象可以存在于没有变量指向它的地方.

你也可以制作更多的藏宝图并复制参考:

Object name = new Object();
Object otherName = name;

现在你有1个宝藏(new Object(),没有名字)和2个宝藏地图(nameotherName),目前已经在它们上面绘制了通往宝藏的地图。但是你可以修改:

Object name = new Object();
Object otherName = name;
name = someOtherObject;

现在的地图名称,原来有一个地图到这个对象,现在有一个地图到一些完全不同的宝藏。

你的问题是:我怎么能问宝藏指向它的地图的名字。希望这个解释能够清楚地说明为什么这根本不可能,并且java不允许您以任何方式这样做。

变量名在运行时被擦除。但有一种方法是使用map。

Map m = ...;
m.put(object, objectName);

最新更新