我不知道这个问题的措辞是否恰当,但这是问题所在。
我有我的课ProductosLacteos
。当我创建实例时,我这样做:
ProductosLacteos quesito = new ProductosLacteos();
所以我想得到quesito
一个文本字符串。以便?调试问题。我有一个控制台,其中显示了不同的程序数据,但计划是在里面我ProductosLacteos
可以使用getNombreDeLaInstancia()
. 这是我所期望的:
ProductosLacteos quesito = new ProductosLacteos();
ProductosLacteos lechita = new ProductosLacteos();
ProductosLacteos jocoque = new ProductosLacteos();
System.out.println(quesito.getNombreDeLaInstancia());
System.out.println(lechita.getNombreDeLaInstancia());
System.out.println(jocoque.getNombreDeLaInstancia());
我得到了结果:
“奶酪”
“小牛奶”
“jocoque”
是否有可能以extends
我所有课程都可用的方式访问这些数据?
谢谢!
该实例没有“名称”。
您看到的是一个参考,它引导您了解实例本身。但是引用名称只是为了让您可以使用它来编译您的程序(而不是使用堆栈指针值加上偏移量)。例如,编译后的代码不保留局部变量的名称,它完全不知道它。
为了说明,想想你做了什么:
现在这两个引用指向同一个实例。这个“名字”是什么?
如果您想通过属性识别类的实例,请将该属性包含在类中并给它一个值。例如:
现在您可以通过访问属性(通过getter)来获取“名称”。您还可以相对于它重新实现
toString
, 并且可能equals
和。hashCode
变量的名称只是内存空间的标识符,对象的实例本身没有名称,它可以有一个属性,但除非属性存储对象的变量名,否则它不会满足您的想法。
从 Java 8 开始,您可以使用反射。
利用:
import java.lang.reflect.Field;
.getName()
注意:使用 a 是
String
因为我没有那个类,并且不是为了使示例更长,使用该类是String
因为它是他们的模拟,但它应该可以正常工作。测试:
Ideone