Java:从超类的实例获取子类的名称
我有一个类Java:从超类的实例获取子类的名称,java,class,extends,Java,Class,Extends,我有一个类公共类N和一个对象aaa=newb() B类看起来像这样: public class B extends A { ... } 我想在N中获得对象a的子类名称作为字符串(也称为“B”)。我该怎么做 编辑:在我的例子中,我使用访问者模式。当A以前定义为A=新B()时,我进行了公共无效访问(A)。然后我需要打电话给公众无效访问(B)。我如何定义我需要精确调用的访问(B)?a.getClass().getSimpleName()应该给出您所要求的。它返回对象的实际类的名称。对于全名(包括包)
公共类N
和一个对象aaa=newb()代码>
B类看起来像这样:
public class B extends A { ... }
我想在N中获得对象a的子类名称作为字符串(也称为“B”)。我该怎么做
编辑:在我的例子中,我使用访问者模式。当A以前定义为A=新B()时,我进行了公共无效访问(A)。然后我需要打电话给公众无效访问(B)。我如何定义我需要精确调用的访问(B)?a.getClass().getSimpleName()
应该给出您所要求的。它返回对象的实际类的名称。对于全名(包括包),请使用getClass().getName()
问题中的N在哪里?如果您有A=new B()
,我在其中定义对象的某个类,您是在问如何知道您实际上有B
?为什么需要它作为字符串?为什么要获取子类名称?这可能是一个。所以,虽然听起来你的设计还是有问题。没有。这个方法给我“A”作为输出,但我想得到“B”。@cricket\u 007它将,A
不是指类A
,而是指对象A=new B()
。如果遵循命名约定,这会更清楚。在这种情况下,您会根据类型列出case语句列表,因为我不推荐这种方法。改为添加一个枚举,或者进一步添加一个工厂模式会更好。