类之间的Java更新全局变量

类之间的Java更新全局变量,java,global-variables,Java,Global Variables,我有一个名为randomWord的公共静态字符串。在一个不同的类运行一个方法之后,我希望它的“值”改变。例如:具有公共静态字符串randomWord的类变量;类1执行一些操作并设置变量。randomWord=orange。第二类需要得到新单词。更新类变量中的randomWord的可能方法是什么 提前谢谢 public final class Variables { public static String randomWord; } 阶级^ public static

我有一个名为randomWord的公共静态字符串。在一个不同的类运行一个方法之后,我希望它的“值”改变。例如:具有公共静态字符串randomWord的类变量;类1执行一些操作并设置变量。randomWord=orange。第二类需要得到新单词。更新类变量中的randomWord的可能方法是什么

提前谢谢

    public final class Variables
{
    public static String randomWord;
}
阶级^

    public static String pickWord()
        throws IOException
{    
    File words = new File("wordList.txt");
    String wordToArray;
    String[] arrWord = new String[3863];   
    Scanner sc = new Scanner(words);
    Random rWord = new Random();
    int i = 0;

    do
    {
        sc.nextLine();
        wordToArray = sc.next();
        arrWord[i] = wordToArray;
        i++;    
    }while(sc.hasNext());

    Arrays.toString(arrWord);
    int idx = rWord.nextInt(arrWord.length);

    Variables.randomWord = (arrWord[idx]);
    System.out.println(Variables.randomWord);
    return Variables.randomWord;
}
在这里,我更改值,将.txt文档中的单词设置到数组中,然后从数组中随机获取一个单词。第一类

String selectedWord = Variables.randomWord;
            System.out.println("Got your word, get ready!" + selectedWord);
            return selectedWord;

在我需要新值类2的地方,您可以这样做。创建一个类,添加公共静态变量并修改变量Variables.randomWord。但更明智的做法是将该类设为最终类,将静态变量设为私有,并使用静态函数获取和设置该变量(封装)

一个工作示例(假定已正确设置了wordList.txt文件路径)

Variables.java: 包com.avk.randomword

public final class Variables {

    private static String randomWord;

    public static String getRandomWord(){
        return randomWord;
    }

    public static void setRandomWord( String randomWord ){
        Variables.randomWord = randomWord; 
    }
}
Class1.java:

package com.avk.randomword;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

public class Class1 {

    public String pickWord(){    
        String              wordToArray;
        String              randomWord;
        ArrayList<String>   arrWord         = new ArrayList<String>();
        Random              rWord           = new Random();

        try{
            File words          = new File("wordList.txt");
            Scanner sc          = new Scanner(words);

            while( sc.hasNext() ) {
                wordToArray = sc.next().trim();
                if( wordToArray.length() > 0 ){
                    arrWord.add( wordToArray );
                }
            }

        }catch( IOException e){
            e.printStackTrace();
        }

        if( arrWord.size() <= 0 ){
            System.out.println( "No words found in array arrWord" );
            return null;
        }
        int idx = rWord.nextInt( arrWord.size() -1 );

        randomWord = arrWord.get(idx);

        Variables.setRandomWord( randomWord );
        System.out.println( "Class1 set Variables.randomWord to: "  + Variables.getRandomWord());
        return Variables.getRandomWord();
    }   

}
Main.java:

package com.avk.randomword;

public class Main {

    public static void main(String[] args) {
        Class1 myClass1 = new Class1();
        myClass1.pickWord();

        Class2 myClass2 = new Class2();

    }

}
如果wordList.txt如下所示:

apple
pear

orange
banana
可能的正确输出为:

Class1 set Variables.randomWord to: pear
This is Class2 getting the randomWord from final class Variables: pear
希望这会有帮助。

我把它修好了

需要添加到类1中

Variables.randomWord = Variables.randomWord = (arrWord[idx]);

我知道我能,但怎么办?如何告诉类更新变量?让类调用您创建的名为Variables.setRandomWord()的静态函数。因为它是静态的,所以不需要实例化新变量()。它在任何地方都可用。但是在Variables.setRandomWord()中,如何获取更新的值?通过添加一个静态函数,如getRandomWord()返回字符串。。。我有一种轻微的感觉,你在嘲弄我,我们在兜圈子。我在问我会用什么代码来更新变量。我如何告诉这个变量它需要更新。新变量.randomWord=Class.settingRandomWord();谢谢你的回答,但这似乎不是我想要的,很好。我会想办法的。
Variables.randomWord = Variables.randomWord = (arrWord[idx]);