如何在Java中跨类共享变量,我试过静态不起作用

时间:2011-02-13 07:41:12

标签: java

类Testclass1有一个变量,有一些执行会改变变量的值。现在在同一个包中有类Testclass2。我将如何访问Testclass2中变量的更新值(由Testclass1更新)。 试过这不起作用

注意:Testclass1和Testclass2是同一个包中的两个独立文件,我试图先在eclipse中运行class1,然后再运行class2。但是class2打印0;

public class Testclass1 {
    public static int value;
    public static void main(String[]args)
    {
        Testclass1.value=9;
        System.out.println(value);
    }
}

----------------

public class Testclass2 {
    public static void main(String[]args)
    {
        System.out.println(Testclass1.value);
    }
}

3 个答案:

答案 0 :(得分:9)

您的问题不是跨类共享值,您希望在后续程序执行中共享值。要做到这一点,你需要在某处保持价值。通常,文件或数据库用于此目的。

答案 1 :(得分:1)

你必须在你的第一个程序中写下这样的东西

public class Testclass1 {
    public static int value;
    public static void main(String[]args)
    {
        try
        {
            Testclass1.value=9;
            System.out.println(value);
            new FileWriter("test.txt", false).append(String.valueOf(value));
        }
        catch(Exception ex)
        {
            //do something
        }            
    }
}

然后在修改后调用第二个程序:

public class Testclass2 {
    public static void main(String[]args)
    {
        try
        {
            Scanner s = new Scanner(new File("test.txt");
            Testclass1.value = s.nextInt();
            System.out.println(Testclass1.value);
        }
        catch(Exception ex)
        {
            //do something
        }
    }
}

要注意的事情:

  1. 确保从同一目录运行程序。
  2. 在运行TestClass2之前,您必须在该目录中拥有TestClass1的.class文件。
  3. 一旦完成,关闭FileWriter也是一个好习惯。

答案 2 :(得分:0)

如果您可以main TestClass1方法执行,它将会起作用。原因是它不起作用,是因为main TestClass1方法从未执行过,所以从未设置过该值。