[英]Get parent class from child class
我有一個接受單個參數的方法。 該參數可以是都繼承自同一個父類E的任何類A,B,C或D。但是,我不知道父類的名稱(也許是“ E”,也可能是“ F”)。
我希望我的方法接受父類作為參數,因此我可以傳入一個子對象(因此我只需要一個方法的實現)。
如何找到父類的名稱? 它在一個我沒有源代碼訪問權限的jar中。
編輯
哪種方法的示例如下所示:
private void processResults(final ???parentClassName??? aParentClassName) {
...
}
返回表示該類表示的實體(類,接口,原始類型或void)的超類的Class。
如果該Class表示Object類,接口,原始類型或void,則返回null。
如果此對象表示數組類,則返回表示Object類的Class對象。
樣例代碼:
A.class.getSuperclass().getName()
要么
aObject.getClass().getSuperclass().getName()
您可以使用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
查看所有內容。
(注意:如果unknown.jar
具有其他依賴項,則可能需要為-classpath
參數指定其他jar或目錄。)
我想,如果您不知道超類/超類的名稱,那是不可能的。
如果只有4個類,為什么不創建一個接口並讓類A到D繼承它們呢? 可能會更容易:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.