我來自C++背景,目前正在學習Java。當我嘗試使用一些第三方庫時出現了一個問題。我如何確定對以對象引用作爲參數的方法的調用是否會修改對象? 在C++中,由於使用了const關鍵字,因此很明顯。如果方法簽名是:如何確定Java方法是否修改作爲參數傳遞的對象
void foo(Boo& boo);
我知道被引用的對象可能會被修改,而如果該方法的簽名是:
void foo(const Boo& boo);
的編譯器保證引用的對象沒有被修改。
我還沒有在Java中看到類似的東西,因爲只有引用本身可以被聲明爲final,而不是被引用的對象,並且最終的參數首先沒有什麼意義,因爲它仍然被值傳遞。因此,當我看到的方法,例如:
void foo(Boo boo) {...}
如何確定由BOO引用的對象的功能的體內修飾(也許使用註釋)?如果沒有辦法知道,是否有一些廣泛使用的約定或一些最佳實踐,以避免混淆和錯誤?
閱讀文檔。 (您可能認爲這是Java相對於C++的一個弱點,但我們不會錯過它,而不是錯過使用C++工作時檢查異常的情況。) – user2357112
最好的做法是在可能的情況下避免突變。這適用於所有事情,而不僅僅是方法的參數。 – usr
@ user2357112「*您在使用C++時錯過檢查異常」*使用異常來控制程序流是一種錯誤,異常是(如其名稱所述)針對**異常情況**。具有語言特徵,其唯一目的是能夠使用例外作爲通信通道從錯誤中恢復,這只是「流量控制的例外」的另一種情況,如上述規則的設計錯誤所述。我們不會錯過檢查的異常。 – Manu343726