簡體   English   中英

在Java中使用全局(靜態)變量

[英]Using a global (static) variable in Java

我需要在同一包的兩個類之間共享一個變量。 我不想爭論我使用全局變量的“原因”。 我通常不惜一切代價避免它們。

我的理解是,我需要將變量聲明為靜態變量,並且以這種方式聲明的任何變量均可用於包中的所有類。 我正在使用一個名為Lanterna的Java庫,該庫用於創建基於文本的GUI。 為了將字符寫入屏幕緩沖區,我必須創建一個屏幕類型的對象(我稱為屏幕)。 下面的兩個聲明放在我的入口類頂部附近(不在構造函數中)。

public static Terminal terminal = TerminalFacade.createTerminal(System.in, System.out, Charset.forName("UTF8"));

public static Screen screen = new Screen(terminal);

在程序頂部,將Terminal和Screen類型聲明為import語句。 這些語句在Eclipse中沒有收到任何錯誤。 在嘗試訪問屏幕對象的類中,我收到一條錯誤消息,說在此行顯示多個標記,無法解析屏幕。

如果需要提供任何其他信息,請告訴我。

盡管terminalscreen無處不在,但它們不會自動導入,您必須通過包含它們的類來引用它們。

例如,如果您在Myclass類中聲明了它們,則可以通過例如訪問它們。

MyClass.terminal.frobnicate();

另外,盡管在大多數情況下這不是標准做法,但您可以像這樣導入它們:

import static myPackage.MyClass.terminal; 

然后,您將能夠簡單地引用terminal而無需澄清您引用的是MyClassterminal ,而不是其他類的名為terminal的靜態字段。

代替導入,您需要static import (《 靜態導入 Java指南》在某種程度上說, 靜態導入結構允許對靜態成員進行無條件的訪問,而無需繼承包含靜態成員的類型 )。 像(顯然是入門級的)

import static com.foo.EntryClass.terminal;
import static com.foo.EntryClass.screen;

暫無
暫無

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

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