[英]Java: (Partial) Serialization of classes (not objects!)
我目前正在執行一項任務,將一個組件及其依賴項打包在一起,並從中制作出一個包含所有需要的東西的獨立組件。
我遇到的情況是,我可能也需要包含用戶定義的類,這些類也需要包含在內。
我正在尋找一種以苗條/智能的方式序列化它們的方法。 這些類例如具有繼承層次結構:
FrameWorkSuper
--------------
UserSuper
UserClass
有沒有一種方法可以僅序列化類的用戶定義部分以使占用空間較小? 源自框架的任何內容都絕對包含在最終組件中。 因此,我想序列化並稍后僅加載整個用戶定義的部分,以使類獲得框架部分也在包中。
有什么方法可以實現這一目標,或者對此我應該使用的建議嗎?
我認為您想要做的是傳輸用戶定義類的實際字節碼。
創建一個自定義的類加載器,該類加載器獲取所有類的字節碼,並將其findClass方法重寫為類似
// first try our cache of loaded classes if (loadedClasses.containsKey(name)) { return loadedClasses.get(name); } // that didn't work, maybe the class was compiled but not yet loaded if (compiledClasses.containsKey(name)) { // get the representation from the cache InMemoryClassJavaFileObject inMemoryRepresentation = compiledClasses.get(name); // let our parent define the class Class<?> clazz = defineClass(name, inMemoryRepresentation.getData(), 0, inMemoryRepresentation.getData().length); // and store it in the cache for later retrieval loadedClasses.put(name, clazz); return clazz; }
請注意,您不需要創建InMemoryClassJavaFileObject
,只需使用字節數組即可。
這使您可以在遠程站點上訪問類本身:您可以創建實例並使用其方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.