我正在使用小程序在線測試Web項目。我想聲明一個int
類型的變量,它跟蹤正確答案的數量。那麼需要聲明哪個變量以便可以在所有幀中訪問該變量?在Java中聲明全局變量
回答
正如其他人所說,你可以使用public static
聲明一個全局變量:
public class MyClass {
public static int globallyVisibleInt = ...;
// or
private static int visibleThroughAccessors = ...;
public static void messWithGlobalState(int newValue) {
visibleThroughAccessors = newValue;
}
public static int seeGlobalState() {
return visibleThroughAccessors;
}
}
然後訪問和使用這個變量,任何其他代碼將僅僅需要導入這個類:
// this code is inside another class and package
MyClass.globallyVisibleInt++;
// or
MyClass.messWithGlobalState(14);
但是,這個全局變量的使用一般是不被接受的。 OOP爲您提供了許多用於處理問題的工具,並且您可能不需要針對此特定情況的全局變量。
Here's關於避免全局變量 - 爲什麼和如何。討論:
與所有HeuristicRules一樣,這不是一個適用於100%的時間的規則。當代碼不使用全局變量時,代碼通常更清晰易於維護,但也有例外。它與GotoConsideredHarmful在精神上類似,儘管使用全局變量不太可能讓你成爲一個無情的黑客。
爲什麼全局變量應儘可能避免不必要的:
- 非本地
- 沒有訪問控制或約束檢查
- 隱耦合
- 併發問題
- 測試和禁閉
替代全局變量:
- ContextObject
- 有狀態的過程
- Singleton模式
- 隱藏全局
@Lion - 我不確定你的建議。 –
java中沒有全局變量。您可以使用公共靜態訪問器在某些類或私有靜態字段中聲明公共靜態字段
我知道java中沒有全局變量。將聲明它是靜態的給我們在相同包中的不同框架中訪問它的自由 –
在OOP中沒有全局變量,但可以聲明公共靜態變量。但這不是一個好習慣!你應該調查如何處理你的情況,並找到另一種方式。
當然在OOP中有全局變量。 –
OOP沒有全局變量,因爲它不是一種語言。甚至Java(例如)在C/FORTRAN意義上也沒有全局變量。在某些時候靜力學必須由封閉類的名稱限定。一個C或FORTRAN全球化是真正的全球化,這是使它們變得危險的事情之一。 –
- 1. 全局變量聲明
- 2. 在ActionScript中聲明全局變量?
- 3. 在yacc中聲明全局變量
- 4. 在coffescript中聲明全局變量
- 5. 在全局變量中聲明查詢
- 6. 在Swift中聲明全局變量
- 7. 全局變量在android中的聲明
- 8. 在vb中聲明全局變量
- 9. 哪一個更好,在類中聲明全局變量或在Java類中聲明局部變量?
- 10. proc聲明中的Tcl全局變量
- 11. 聲明Button1_Click中的全局變量
- 12. 在全局頭文件中聲明一個全局變量?
- 13. 聲明作爲全局變量在類中創建的變量
- 14. Python類正在更改全局變量而未聲明全局
- 15. 全局變量多重聲明
- 16. Oracle觸發器:聲明全局變量
- 17. 聲明和初始化全局變量
- 18. JavaScript;我如何聲明變量全局?
- 19. 無法用TypeScript聲明全局變量
- 20. 如何聲明全局變量
- 21. 如何聲明全局變量?
- 22. 聲明中的Java小腳本的全局變量
- 23. 私人與fileprivate在Swift3中聲明全局變量/常量?
- 24. 在python中聲明一個函數中的全局變量
- 25. Java聲明變量
- 26. Java變量聲明
- 27. java變量聲明
- 28. PHP聲明全局變量和會話變量
- 29. 聲明的全局變量在功能裏面沒有改變
- 30. SWIG不會在wrap文件中聲明全局變量
怎麼樣打造一個類只有所有的參數?並將其用作/作爲參考? – deadfish