簡體   English   中英

Java,動態創建接口?

[英]Java, creating interface dynamically?

我正在尋找在運行時創建接口的解決方案。 我真的不知道這是否有可能。

問題:

我有一個OSGi服務,該服務發布了Map<String,String> ,其中鍵定義了此服務的操作。 我想將此服務直接作為Spring的Hessian服務發布,但是為此,我需要使用delcare接口。 現在,我想在運行時創建此接口。

例如,可以通過使用字節碼操作庫(例如ASM)生成接口來動態創建接口。 但是將無法使用該接口,因為無法針對該接口編譯任何代碼(除非您還動態生成使用該接口的代碼)。

您正在嘗試做什么?

您不能真正做到這一點(除非您涉及字節碼操作/創建,而且我認為這不是最佳途徑)。

如果您沒有任何東西可以訪問該接口,那么動態創建的接口有什么用?

換句話說:沒有任何東西可以針對動態創建的接口進行編譯(顯然,因為它在編譯時不存在)。 那么誰會使用它呢?

另一個問題中選擇了以下答案。 該示例實際上編寫了一個新類,因此可能會對您有所幫助。

JDK6具有Java編譯器API 但是,它不一定很容易使用。

一個快速的谷歌搜索了這個示例用法

接口和類僅用於幫助編譯器發現可能的錯誤。 如果要在運行時創建此接口,則沒有編譯器,因為它不會找到錯誤,所以為什么需要此接口?

在這種情況下,只需發布​​一些通用接口的實現,就可以像這樣:interface GenericInterface {Object invokeMethod(String name,Object ... arguments); }這是您唯一需要的接口,您可以在編譯時創建它! 您可能僅需要在運行時創建它的實現,例如,使用java.lang.reflect.Proxy

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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