[英]How to set Value in Global Variable?
導入后我在頂部聲明了變量
String sk5;
sk5中的推算值
sk5 = s.substring(s.lastIndexOf("-")+1).replace("]", "");
System.out.println("Checking sk5->"+sk5);
它很好地打印了值,但是當我在其他函數中使用此變量時,它將打印NULL。 請建議我如何解決此問題。
導致此問題的最常見原因是所有sk5
變量都相同的假設。 如果您有多個變量或多個實例,則實際上您有多個具有相同名稱的字段/變量。
最簡單的檢查方法是查看在調試器中逐步執行代碼時所執行的代碼。
您可以在下面的示例中看到,您有三個名為sk5的變量,具有三個不同的值。
class MyClass {
int sk5;
public static void main(String... s) {
MyClass a = new MyClass(), b = new MyClass();
a.sk5 = 1;
b.sk5 = 2;
int sk5 = 3;
System.out.println(a.sk5+" " + b.sk5 + " " + sk5);
}
}
版畫
1 2 3
我假設你想定義一個類變量,所以你應該使用
public static String sk5;
但是定義一個不是final的公共靜態變量是錯誤的代碼風格 。 如果要在其他類中使用類變量,則應實現類似的getter-Method
private static String sk5;
public static String getSk5(){
return sk5;
}
而且靜態變量仍然不是最好的。 嘗試檢查Singleton ,具體取決於我們的用例
從我的角度來看,最好的方法是定義
private String sk5;
public String getSk5(){
return sk5;
}
所以你可以打電話
TestClass s = new TestClass();
String t = s.getSk5();
您在使用C#嗎?
通常,在類定義之后直接定義全局變量,如下所示:
class MyNewClass{
public string newglobalval;
public MyNewClass(){
newglobalval = "Hello";
}
public void ShowGlobalVal(){
Console.Write(newglobalval);
}}
編輯:嗯,有人更快,但是變量不需要是靜態的。
和平。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.