我有一个静态变量并在课堂上更新它的值。但是当我从另一个类访问这个变量时,它会显示未更新的值。
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);
}
};
CLASS B
String message = A.Creator(); //this always prints postID as 1 all time
我需要一个全局变量,我可以从每个类访问并更新其值。等待你的帮助(我使用的是Android服务)
答案 0 :(得分:2)
这是经过测试的代码。
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());
}
}
}
答案 1 :(得分:1)
您需要致电工作以执行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
答案 2 :(得分:1)
A班 { static int id = 0;
//I am updating id in my function ,
{
id++;
}
}
public class 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);
}
}
答案 3 :(得分:0)
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);