我有一个接受单个参数的方法。该参数可以是任何继承自同一父类E的A,B,C或D类。但我不知道父类的名称(也许它是"" E&#34 ;也许是" F")。
我希望我的方法接受父类作为参数,所以我可以传入一个子对象(所以我只需要一个方法的实现)。
如何找到父类的名称?它是在一个罐子里,我没有源代码访问。
修改
示例的方法示例如下:
private void processResults(final ???parentClassName??? aParentClassName) {
...
}
答案 0 :(得分:2)
返回表示此Class所代表的实体(类,接口,基本类型或void)的超类的Class。
如果此Class表示Object类,接口,基本类型或void,则返回null。
如果此对象表示数组类,则返回表示Object类的Class对象。
示例代码:
A.class.getSuperclass().getName()
或
aObject.getClass().getSuperclass().getName()
答案 1 :(得分:1)
您可以使用JDK附带的javap
工具。
假设您的jar文件名为unknown.jar
,并且您感兴趣的父类的类A
的包是com.example.unknown
。
你可以这样做:
javap -classpath unknown.jar com.example.unknown.A
输出结果如下:
Compiled from "A.java"
public class com.example.unknown.A extends com.example.unknown.E {
public com.example.unknown.A();
}
它还会显示A
的公共API。它还可以显示更多信息,具体取决于您传递的命令行参数。使用javap -help
查看所有内容。
(注意:如果-classpath
有其他依赖项,您可能需要为unknown.jar
参数指定其他jar或目录。)
答案 2 :(得分:0)
如果您不知道超类/超类的名称,我认为是不可能的。
如果只有4个类,为什么不创建一个接口并让你的类A到D继承它们?可能更容易:)