Java中是否存在C++中傳遞常量引用的等價物?
不遺漏關於方法簽名的「常量」誤導嗎?將「const」變量傳遞給Java中的方法
10
A
回答
14
沒有,沒有。
Java「的最後的」不是C++「常量」完全等效。下面(最終的變數延遲初始化)的作品在Java中:
final double x;
int w = 1;
if (w > 2)
{
x = 0.5;
}
else
{
x = - 0.5;
}
,但它並沒有在C++與「最終」改爲「常量」工作。
在方法聲明一個變量使用「最後」可以在Java中非常有用,因爲可以讓你用你的方法內創建的任何匿名類內部的變量。
PS。我首先對Java中缺乏「const」感到失望,但後來學會了與「final」一起生活。
PS2。鏈接到此線程中的Java詞彙表(http://mindprod.com/jgloss/immutable.html)有一件事是錯誤的:不,您沒有得到100%保證最終變量不會更改其值:
1)它從「未定義」更改爲「規定」,但編譯器會告訴你,如果你在Linux上初始化
2)之前引用它,雙有80位精度存儲在寄存器時,但存儲在內存中,當64位。當一個最終的雙變量被推出註冊表時,它將被截斷並改變它的值。正如Joel Spolsky所說,「抽象引發了泄漏」。
1
在Java中實現這一看到這個: Immutable objects in Java
0
最接近的Java等價物const
是final
。
void func(final SomeClass x) {
// The following causes a compiler error
x = ...;
// The following works. If you don't want it to, then you have to make
// somevar final or write a getter (but not a setter) for it in SomeClass.
x.somevar = ...;
}
8
Java沒有任何東西像C++的const的概念。這是爭論的一個觀點,儘管有趣的是.NET沒有。我認爲,其原因有:
- 獲得理解語法變得相當棘手(IMO) - 告訴可變StringBuilders的常量列表和const StringBuilders等的可變列表之間的差異是困難的。 (我當然覺得很難在C++中,儘管這可能是由於缺乏實踐的。)
- 我強烈懷疑,這是不能接受的,允許常量性在託管語言被拋棄。它會違背整個事物的粒度。在很多情況下,這可能會讓他們更難處理。
- 在執行時傳播關於const的信息(以避免被拋棄的可能性)在性能方面可能很困難和/或昂貴
- 由於Java(和.NET)在過去並沒有常量,在遊戲的最後階段引入很難困難 - 除非所有常見的圖書館都支持它(並且在每一步都得到它正確的!),最終會出現一個令人討厭的混雜現象,事實上,如果您需要,它可能完全不可行使用兩個庫,其中一個不知道const,另一個只提供const值。
1
如上所述,在Java中沒有const。但是,當我們要實現「關閉」,同樣的結果在Java中,我們使用
public static final Object x = somedata;
這在該點設置數據和霸菱抽象泄漏等等,你必須儘可能接近等價,你可以得到。
5
BTW:Java確實有const作爲關鍵字,但不能在任何地方使用它。
相關問題
- 1. 將變量傳遞給方法(Java)
- 2. 將變量傳遞給amCharts.loadfile方法?
- 3. 將變量傳遞給方法
- 4. 將變量傳遞給類方法
- 5. 將方法傳遞給變量
- 6. 將變量傳遞給javascript方法
- 7. 將對象方法傳遞給變量
- 8. 將PHP變量傳遞給onClick方法
- 9. 將變量傳遞給`.exist()`方法?
- 10. 將方法中的變量傳遞給類中的方法
- 11. 將java變量傳遞給java bean
- 12. 將塊傳遞給Java中的方法
- 13. 將此變量傳遞給此類變量的方法
- 14. 從Ant目標將變量傳遞給Java方法
- 15. 將變量傳遞給Java線程(run()方法)
- 16. 將變量傳遞給java進程
- 17. Java Swing將變量傳遞給JFreeChart類
- 18. 將變量傳遞給Java ActionListener?
- 19. 將JS變量傳遞給java類
- 20. 將變量從java傳遞給javascript
- 21. 通過JSP將變量傳遞給Java?
- 22. 將JSP變量傳遞給Java函數?
- 23. 將java變量傳遞給javascript函數
- 24. 將變量傳遞給方法並停止重置變量
- 25. 將nil分配給傳遞給方法的成員變量
- 26. 將變量傳遞給某個方面
- 27. 值傳遞給java中的變量
- 28. 將變量傳遞給Rails控制器方法中的渲染
- 29. 將方法中的變量傳遞給按鈕單擊事件
- 30. 如何將變量傳遞給QT中的插槽方法?
這是我見過的最差的網站..:/ – 2009-02-02 07:47:54
添加了一個新鏈接.. – Naveen 2009-02-02 08:27:40