如何在 Java 中获取 Child Class 接口的 Parent 名称

How to Get Child Class Name of a Parent Interface in Java

我想获取由接口实现的child class名称。 例如

public interface A
public class B implements A
public class C implements A
...

在我的代码中,我声明了接口 A 并将值设置为这些 class 之一。所以我有这个:

A a = object.getA();

现在我想获取当前的 child class 名称,例如 B、C 或其他名称,但我不想使用 instanceof 来获取它,因为我有很多 child classes 这使得代码不必要的长。 我基本上是在寻找这个,但 getChild() 当然不存在。

a.getChild().getClass().getName()

提前致谢!

如果我对问题的理解正确,听起来你要找的是:

String name = a.getClass().getName();
// Or
String simpleName = a.getClass().getSimpleName();

如果对象 «a» 的 class 是 B 的实例,则 getSimpleName() 将 return “B”。 return 如果 «a» 是 C 的一个实例,则为“C”,依此类推。

这会起作用。

interface A {
}
class B implements A {
}

class C implements A {
}
class Test {
    public static void main (String[] args) {
        A a = new C();
        System.out.println(a.getClass().getName());
    }
}