簡體   English   中英

如何將 .class 文件加載到變量中?

[英]How do I load .class files into a variable?

我正在將基於文本的游戲作為練習項目。

我已經設法編寫了一個顯示信息和處理用戶輸入的引擎。 它從自定義Scene類中提取游戲內容。 更准確地說,我有一個Scene超類,並為實際可玩級別創建子類,如EvilDungeon extends Scene

所有場景都位於“場景”文件夾中,但我希望以后能夠通過將新場景的附加 .class 文件放入所述文件夾來進行游戲擴展。

我的計划是在游戲開始時使用loadClass將它們添加到Scene -array,但它需要我不知道的 class 名稱,因為場景文件夾中可以有任意隨機組合的場景。

如何在不知道確切存在哪些場景的情況下加載文件夾中的所有場景? 我能以某種方式檢索 class 名稱嗎?

我的計划是在游戲開始時使用 loadClass 將它們添加到場景數組,但它需要我不知道的 class 名稱,因為場景文件夾中可以有任意場景的隨機組合。

這就是服務提供者接口的用途。 只需為您的插件定義一個接口並使用ServiceLoader獲取每個插件的實例。

插件需要在 /META-INF/services 中提供一個以接口命名並包含實現該接口的 class 的文本文件(兩個名稱都必須完全限定)。 您將在ServiceLoader的文檔中找到詳細信息。

這使您能夠將插件添加到類路徑。 例如,您可以使用類似java -cp myapp.jar;plugins/* my.app.Main之類的東西運行您的應用程序,然后文件夾 plugin 中的所有插件-Jar 將被添加到類路徑中並可供您的應用程序使用(對於有關星號的更多信息,請參閱此答案)。

如果您想在運行時加載插件,您可以使用 URLClassLoader,例如閱讀這個問題或本教程了解如何使用 URLClassLoader。

暫無
暫無

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

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