如何在 Java 中获取父接口的子类名称

发布于 2025-01-14 15:04:48 字数 409 浏览 0 评论 0原文

我想获取由接口实现的子类名称。 例如,

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

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

A a = object.getA();

现在我想获取当前的子类名称,例如 B、C 或其他名称,但我不想使用 instanceof 来执行此操作,因为我有很多子类,这使得代码变得不必要的长。 我基本上正在寻找这个,但 getChild() 当然不存在。

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

提前致谢!

I want to get the child class name which is implemented by an interface.
For example

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

In my code I have declared the interface A and have set the value to one of these classes. So what I have is this:

A a = object.getA();

Now I want to get the current child class name, so B, C or whatever, but I don't want to do it with instanceof because I have many child classes which makes the code unnessesary long.
I am basically looking for this but getChild() doesn't exist of course.

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

Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

嗫嚅 2025-01-21 15:04:48

如果我正确理解这个问题,听起来您正在寻找的是:

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

如果对象 «a» 的类是 B 的实例,则 getSimpleName() 将返回“B”。如果 «a» 是 C 的实例,则返回“C”,依此类推。

If I understand the question correctly, it sounds like what you're looking for is:

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

If the class of object «a» is an instance of B then getSimpleName() will return "B". It return "C" if «a» is an instance of C and so on.

谈下烟灰 2025-01-21 15:04:48

这会起作用。

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());
    }
}

This will work.

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());
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文