簡體   English   中英

如何在JAVA中使用靜態全局變量

[英]How to use static global variables in JAVA

我正在開發Java程序,我有2個不同的類,需要彼此共享變量。 為此,我創建了第三個類,其中包含這些共享變量。 基本上,第一類在此第三類中具有自己的標志,第二類在此第三類中具有其自己的標志。 當然,我在其他類的定義中添加了“ extended ThirdClass”。

我的問題是,當我在第一類的main方法中更改第一類的標志的值時,第二類無法看到此更改。 即,它看到帶有初始值的標志。

我認為這與靜態變量有關。 但是我不知道解決方案。

實際上,我有兩個服務器和多個客戶端。 我正在嘗試為我的分布式系統課程模擬這些服務器的不同情況。 每個服務器都有自己的數據表,該數據表與其他服務器同步。 通過模擬,我的意思是服務器可能已關閉或已啟動,並且當客戶端嘗試關閉服務器時,我需要將其定向到其他服務器。 因此,在客戶端和服務器之間,我需要發送信息。

如何在兩個類之間共享變量,並且可以在任何類中輕松地修改這些變量而又不會丟失以前的修改?

謝謝。

編輯-此答案適用於該問題的先前版本,不包含有關客戶端和多個服務器的任何內容。 這個答案是關於在類實例之間共享數據的。

有很多方法可以執行這樣的操作。 如果我理解您在第一段中概述的方法,則您不希望class1和class2擴展class3。 您希望它們都引用一個class3 實例 如果它們共享對同一對象的引用,則該對象上的更改值將反映在兩個類中。 如果它們像您說的那樣擴展了class3,則class1和class2都將具有class3的屬性,但是它們將不會共享任何數據。 如果第3類具有財產

  Object value;

那么class1和class2的實例將具有對“ value”的單獨實例的單獨引用。

您需要了解類與對象實例之間的關系,以及擴展類的含義。

注意,這並不是在真實程序中的對象之間共享信息的好方法。 您可能會遇到各種各樣的並發問題。 使用使用靜態字段實現的全局機制的解決方案也是如此。

要使用靜態字段執行此操作,請執行以下操作:

class SharedData {
    public static Object shared1;
}

然后在您的class1和class2實例中,您可以訪問

SharedData.shared1

設置或獲取。

但是我不會在任何專業背景下做這樣的事情。

您可以使用靜態方法解決此問題。 當一個成員被聲明為類的靜態成員時,訪問該成員的每個人都引用該變量的相同實例,但這聽起來並不像您要找的東西。

如果要由兩個類共享某些數據,可以將數據放在第三類中,並且在創建該第三類的實例時,請確保其他兩個類都可以訪問它。

您能概述一下您要完成的工作嗎?

暫無
暫無

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

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