是否有可能在保留原始名稱的同時在java中擴展類?如果現在我可以添加到該類的額外功能(注意這個類是由android sdk提供的,它的視圖類)擴展類,同時保留在java中的名稱
回答
不,Java中的類不是「可重新打開的」。擴展是一個新類。
(一個警告,通過背叛你也許可以添加字節碼,但沒有將能夠在編譯時訪問它。)
同意。 Java中沒有類似於Objective-C「類別」的東西。 –
在Android上添加字節碼是不可能的 –
@MikeG [This](http://groups.google.com/group/android-platform/browse_thread/thread/21549d6f3228eb50?pli=1)似乎不同意。無論哪種方式,它取決於何時以及如何添加它。就像我所說 - 無論如何不會在編譯時提供。 –
當你擴展中的Java類,您可以通過創建這樣做一個新名字的新班級。 ex:
public class MySpecialView extends View
擴展類未被修改。
只有當它位於不同的包中時,纔可以這樣做。 (也就是說,它可以有相同的簡單的名字,但不是同一個合格的名稱。)
package com.me;
class Number extends java.lang.Number {
// ...
}
謝謝你。剛花了一個小時解決了一個完全無關的問題,這個答案讓我走上了正確的軌道。 – velis
我假定你的意思是完全合格的名稱(FQN =包+類名)。所以,不,你不能,而你真的不應該。這就是首先要有一個包名稱。
但是,如果您堅持這樣做,您可以使用相同的包和相同的名稱創建一個新的類,從原始源代碼開始(假設您擁有它)並更改您需要的任何功能。根據類路徑順序(通常您的源代碼優先於任何包含的庫,但您必須確保它是如此),類加載器將選擇您的類而不是原來的類。但這更像是一種黑客行爲,我強烈建議避免它,除非您確切知道自己在做什麼,因爲您可能會遇到各種意想不到的行爲。
- 1. 重命名文件,同時保留java中的文件擴展名
- 2. 重命名多個文件,同時在linux中保留相同的擴展名
- 3. UrlFilenameViewController在視圖名稱中保留URL擴展
- 4. .htaccess刪除擴展名,同時保留uri參數
- 5. 在構造函數中保存擴展類的'方法'名稱
- 6. 從擴展類中獲取類名稱
- 7. java gzip無法保留原文件的擴展名
- 8. 我應該在自己的「擴展」文件中保留擴展名嗎?
- 9. 在保留角的同時伸展UIImage
- 10. 如何刪除文件擴展名以顯示,但保留href的擴展名?
- 11. 擴展保留屬性
- 12. 保留網址擴展
- 13. PrestaShop:在上傳產品定製(或至少是擴展名)時保留文件名和擴展名
- 14. foreach:保留名稱
- 15. 擴展類在Java中
- 16. Java泛型名稱衝突擴展
- 17. 如何在保持列名順序的同時擴展tidyr :: spread()?
- 18. JRuby:擴展具有相同名稱的兩種方法的Java類
- 19. 是否有可能擴展一個具有相同名稱的Java類
- 20. jpype訪問Java mehtod /變量的名稱是保留名稱在Python中
- 21. Python:如何在使用os重命名文件時保留文件擴展名?
- 22. 函數來改變不同擴展類型的名稱文件
- 23. 擴展Java類
- 24. 擴展Java類
- 25. 在prototypejs中擴展名稱空間
- 26. 在Rails中,「名稱」是保留字嗎?
- 27. Java:在運行時擴展類
- 28. 可以擴展java中的主類並且文件名由子類保存嗎?
- 29. 的Java擴展類類型
- 30. 正則表達式的擴展分裂,但保留擴展
這是不可能的,但也許如果你可以描述你想要在更高的層次上做什麼,那麼有人可以建議一個替代方法來完成你想要完成的任務。 – goto10
@ goto10例如我想添加一個函數到View類的android,但我不想擴展它,並使用新的類名。 –
我很瞭解。但是,你能用更一般的術語來描述你的目標嗎? 「我希望所有的觀點都是紫色的。」 「我希望所有的視圖彈出一個消息框,當我點擊它們時,會顯示'嗨'。」你想要的具體技術解決方案是不可能的,但可能有另一種方法來實現你的目標。 – goto10