Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:从超类的实例获取子类的名称_Java_Class_Extends - Fatal编程技术网

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语句列表,因为我不推荐这种方法。改为添加一个枚举,或者进一步添加一个工厂模式会更好。