在運行時,Java可能會給一個類甚至是它的函數一個新的名字。通過在程序啓動時讀取新名稱作爲參數或配置文件?你可以動態重命名類名嗎?
更新:
這是這個的目的。我使用Java Script Engine來允許任何與JSR 223兼容的腳本語言訪問我們的API。我們的一些客戶不習慣使用Java,它的命名約定,並且使用自己特定的命名約定會感覺更舒適。所以我需要給他們動態改變API的類和函數名稱的能力,而不用在代碼中改變它們。有人建議我用地圖和某種與字符串名稱和實際的Java名稱例如結合
map.put("Hello",HelloWorld.class)
Object obj = new Hello();
這應該是相同的,
Object obj = new HelloWorld();
如果這是不可能的,請告訴我爲什麼。我需要一個堅實的Java專業知識答案。這是我的聯盟,我需要事實告訴人們爲什麼這是不可能的,即使我自己幾乎可以肯定這是不可能的。
可能的解決方案:
這是我想出來的closet解決方案。使用此鏈接, https://weblogs.java.net/blog/2005/08/10/reflection-and-dynamically-changing-classes 我可以在運行時添加名稱,使用組合來創建適配器類,然後編譯該文件,並且腳本語言人員可以使用其定義的名稱而不是我的API的Java名稱。
這是唯一可以實現的方法嗎?
更新2:
這裏是任何人試圖這也另一種可能的解決方案,
http://asm.ow2.org/doc/faq.html
這會直接帶您到他們的常見問題,這將有一個對這個確切的問題。
我不這麼認爲......但只是想問你爲什麼需要重命名你的類名? –
如果你需要動態*類*名稱,可能會有比你想象的更好的設計模式 –
聽起來像一個XY問題(http://meta.stackexchange.com/questions/66377/what-is-the- xy-problem/66378#66378) - 你想要做什麼/解決什麼? – Joe