簡體   English   中英

Java靜態方法的標准?

[英]Criteria for Java static methods?

有人告訴我:

如果您使用Eclipse並且在方法中沒有看到任何藍色字(即成員變量),那么這些方法應該是靜態方法,只要參數(如果有的話)是原始類型,或者(在對象引用的情況)是不可變的和/或線程安全的。

在決定實例方法是否真的應該是靜態方法時,Java開發人員應該考慮其他任何標准嗎?

簡單地說,如果它是純粹的“輔助/函數”,它不會修改對象的內部狀態,那么它就是靜態方法的良好候選者。

...除非您計划子類化並覆蓋該方法。

只要參數(如果有的話)是原始類型,或者(在對象引用的情況下)是不可變的和/或線程安全的。

我不明白為什么這是相關的。 無論是否使方法靜態,任何線程安全注意事項都是完全相同的。 只有不可變參數的靜態方法(也不會弄亂類的靜態字段)是線程安全的。 如果參數不是不可變的並且方法改變它們並且這變得非線程安全,那么使這個實例方法根本無濟於事。

如果您不需要對象的實例來調用該方法,則它應該是靜態的。 即:如果您只使用參數而沒有對象的成員。 通常那些是從未實例化的實用程序或輔助類中收集的(通過聲明私有默認構造函數來保護)。

ps:關於“藍字”:你應該總是使用this. 訪問成員變量並且不依賴IDE,因為一旦使用簡單的查看器/編輯器,代碼變得非常難以理解。

您計划以全局方式為所有實例使用的任何函數都可以是靜態的

暫無
暫無

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

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