簡體   English   中英

從孩子班獲得家長班

[英]Get parent class from child class

我有一個接受單個參數的方法。 該參數可以是都繼承自同一個父類E的任何類A,B,C或D。但是,我不知道父類的名稱(也許是“ E”,也可能是“ F”)。

我希望我的方法接受父類作為參數,因此我可以傳入一個子對象(因此我只需要一個方法的實現)。

如何找到父類的名稱? 它在一個我沒有源代碼訪問權限的jar中。

編輯

哪種方法的示例如下所示:

private void processResults(final ???parentClassName??? aParentClassName) {
    ...
}

嘗試使用Class#getSuperclass()

返回表示該類表示的實體(類,接口,原始類型或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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM