Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java-从另一个类访问递增的静态变量_Java_Android_Static_Static Members - Fatal编程技术网

java-从另一个类访问递增的静态变量

java-从另一个类访问递增的静态变量,java,android,static,static-members,Java,Android,Static,Static Members,我有一个静态变量,并在类中更新它的值。但是当我从另一个类访问这个变量时,它显示了未更新的值 甲级 public static int postID = 1; public static String Creator() { String message = "POST id="+postID; return message; } void updatePostID() { postID++; //this function is being

我有一个静态变量,并在类中更新它的值。但是当我从另一个类访问这个变量时,它显示了未更新的值

甲级

  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++

这是一个a类示例:

class A {

    static int id = 0;

    public void work(){

        id++;

    }
}
将类A保存在名为A.java的文件中,将类B保存在名为B.java的文件中

然后编译B。因为B创建了类A的实例,所以A将被编译,您不需要单独编译A-

javacb.java

编译后,执行/运行-

爪哇湾


Sajal Dutta的回答很好地解释了这一点,但如果您希望保持所有内容都是静态的,即不创建任何A类对象,您可以稍微修改代码,如下所示:

class A {
    static int id = 0;
    public static void work(){
        id++;
    }
}
然后:

这将产生:

0 一,

根据更新的问题进行编辑

在哪里指定静态int的更新?从您提供的代码中,您所要做的就是反复打印相同的int,因为包含增量进程的方法从未被调用

编辑2:

试试这个:

更改:

handler.post(show);
致:

甲级 { 静态int id=0

//I am updating id in my function ,
{
  id++;
 }
}
公共类起始点{

public static void main(String... args){

    A a = new A();
    A b = new A();

    System.out.println(A.id);
    System.out.println(a.id);
}

}

这甚至不是有效的java语法什么是函数工作?这甚至不是有效的输入?!这只是一个例子..我的意思是我正在更新函数中的值。写出你正在使用的确切代码-毕竟,这是一个相当短的代码量。顺便说一句,我假设你正在调用work方法?@dracula:是的。你确定吗e你已经完全复制了那段代码?将volatile添加到public static int postID=1;我认为你需要检查你的代码。这并不是你想要做的-为什么你要创建两个类A的对象,然后静态引用它,静态块很糟糕!把它放在一个方法中。只是一个反例,它会增加每个类的值告诉我你创建了一个新实例,但你没有解释。此外,在不使用对象并且静态访问int时,通过创建类的新对象来增加int是非常违反直觉的。正如我在评论中所写的,我使用每10秒运行一次的处理程序调用updatePostID。ha没有任何问题你们理解我的问题。若我访问类A中的postID,它会给我递增的值,若从类B调用它,它会给1,但通常是5,只是一个例子
handler.postDelayed(show, 10000);
//I am updating id in my function ,
{
  id++;
 }
}
public static void main(String... args){

    A a = new A();
    A b = new A();

    System.out.println(A.id);
    System.out.println(a.id);
}