[英]java - access incremented static variable from another class
我有一個靜態變量,並在課堂上更新它的值。 但是,當我從另一個類訪問此變量時,它顯示了未更新的值。
A類
public static int postID = 1;
public static String Creator()
{
String message = "POST id="+postID;
return message;
}
void updatePostID()
{
postID++; //this function is being called each 10 seconds
}
@Override
public void start() {
handler.post(show);
}
Handler handler = new Handler();
private final Runnable show = new Runnable(){
public void run(){
...
updatePostID();
handler.postDelayed(this, 10000);
}
};
B級
String message = A.Creator(); //this always prints postID as 1 all time
我需要一個可以從每個類訪問並更新其值的全局變量。 等待您的幫助(我正在將其與Android服務配合使用)
這是一個經過測試的代碼。
public class A {
public static int id = 0;
public static int increment(){
return A.id++;
}
}
public class B {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println(A.increment());
}
}
}
您需要調用work來執行id++;
class B {
public static void main(String... args){
A a = new A();
a.work(); // You need to call it to apply add operation
System.out.println(A.id); // Prints 1
}
}
這是A類示例:
class A {
static int id = 0;
public void work(){
id++;
}
}
將類A保存在名為A.java的文件中,將類B保存在名為B.java的文件中。
然后編譯B。由於B創建了類A的實例,所以將編譯A,而您無需單獨編譯A,
javac B.java
編譯后,執行/運行
Java B
A類{static int id = 0;
//I am updating id in my function ,
{
id++;
}
}
公共類StartingPoint {
public static void main(String... args){
A a = new A();
A b = new A();
System.out.println(A.id);
System.out.println(a.id);
}
}
Sajal Dutta的答案很好地解釋了它,但是如果您希望將其保持為靜態(即不創建A類的任何對象,則可以對此稍作修改):
class A {
static int id = 0;
public static void work(){
id++;
}
}
然后:
class B {
public static void main(String[] args){
System.out.println(A.id);
A.work();
System.out.println(A.id);
}
}
這將產生:
0
1個
編輯(關於您更新的問題)
您在哪里指定靜態int的更新? 從提供的代碼中,您將一遍又一遍地打印出相同的int,因為從未調用包含遞增過程的方法。
編輯2:
嘗試這個:
更改:
handler.post(show);
至:
handler.postDelayed(show, 10000);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.