我想得到由接口实现的子类名。例如
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()
提前谢谢!
当然,对于现有的接口对象,您可以执行以下操作:
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(接口)类型的类型并 没有 工作(它恐慌的时候,你要调用它的种类()) 问题答案: 像这样做: 或一行: