当前位置: 首页 > 知识库问答 >
问题:

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

范兴文
2023-03-14

我想得到由接口实现的子类名。例如

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

提前谢谢!

共有1个答案

鄢松
2023-03-14

当然,对于现有的接口对象,您可以执行以下操作:

a.getClass().getName()

如果想检测哪些类提供接口,可以使用JavaSPI。服务提供者接口

在库jar中有一个文本源META-INF/service/com.company.A(包com.company,接口A),并在该文本中列出所有实现类。

看看javadocs如何列出所有类,或者选择一个。

 类似资料:
  • 问题内容: 在Objective-C中,我用于获取父URL。在Java中这相当于什么? 问题答案: 我能想到的最短的代码段是这样的:

  • 在Objective-C中,我使用获取父URL。这在Java中的等价物是什么?

  • 但是,我也看到了一种奇怪的方法来重写接口方法: 3.子类只实现接口,但由父类重写接口中的方法: 覆盖接口方法的第三种方法在android框架源代码中非常常见,例如: 这样设计的原因是什么?

  • 我试图在父组件中显示子组件的状态,但不知何故,文本“abcde”仍然没有显示,这是示例代码 但不知怎么的,屏幕仍然是空的,“abcde”直到我点击两次,来自功能组件,所以我不知道发生了什么,请帮助,非常感谢

  • 问题内容: 我想从我的接口对象获取实现类名称-有什么方法可以做到这一点? 我知道我可以用来检查实现对象,但是在我的应用程序中,有将近20到30个实现相同接口的类可以重写一个特定方法。 我想弄清楚它将要调用的特定方法。 问题答案: 只需使用-它会返回用于实现接口的运行时类:

  • 问题内容: 为了确定给定类型是否使用reflect包实现接口,您需要将reflect.Type传递给reflect.Type.Implements()。您如何获得这些类型之一? 作为一个例子,试图获得未初始化的os.Error(接口)类型的类型并 没有 工作(它恐慌的时候,你要调用它的种类()) 问题答案: 像这样做: 或一行: