我有一个字符串,我想让它可用于所有类。每个类都可以修改字符串,当我再次使用字符串时,修改将保留在字符串中。我有3个动作监听器,我希望每个动作监听器修改字符串并保持更改。我想将修改后的字符串写入文件,这是在main方法中完成的。我该怎么做才能使字符串可用于类并保留类完成的修改? 我试过这个 -
public class BasicGuiOnlyText {
static String outputHtml="";
//Rest code of the class }
mnuItemNew.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
outputHtml+="<html>";
}
}
public static void main(String args[]){
BasicGuiOnlyText gui = new BasicGuiOnlyText();
OutputStream htmlfile= new FileOutputStream(new File("test.html"));//For the creation of HTML file
PrintStream printhtml = new PrintStream(htmlfile);
printhtml.println(outputHtml);
}
但这不起作用。它不适用于actionlistener类。如果我在actionlistener类中使用另一个字符串来声明它是ststic,则该字符串不可用于主类。
答案 0 :(得分:0)
假设您有一个类加载器,那么</ p>
public Class Classname {
public static STRING_NAME = String
...
将公开发布给任何类,如Classname.STRING_NAME
但是,要将字符串保存在文件中,最好定义一个专用的单例类,其中包含获取和设置当前值的方法。在put之后你会让你的代码写出一个文件的值,在get值后面你会读取文件中的当前值。
如果您的应用程序使用多个线程,那么您可能还需要同步读/写操作。
类似
public class StringValue {
private static StringValue instance = new StringValue();
private StringValue() {
... constructor
}
public static StringValue getInstance() {
return instance;
}
public synchronized void putValue(String newValue) {
write to file...
}
public synchronized String getValue() {
read the file ...
}
}
如果您在同步时遇到性能问题,那么您可以进一步缓存当前值。
客户端代码类似于
String currentValue = StringValue.getInstance().getValue();
StringValue.getInstance().putValue("NewValue");
答案 1 :(得分:0)
将String设为public,并使用静态导入将其导入ActionListener,或者导入该类并使用引用BasicGuiOnlyText.outputHtml
。
请记住,除非您指定变量所在的类的命名空间,否则JVM将无法解析它。
答案 2 :(得分:0)
如果它只是一个字符串,我希望您使用类似Property file
,的内容,您可以在其中写入,然后从中读取。但是如果你想把它变成一个Class而不是文件......那么就做下面的事。
1。使用class
创建public static String variable
。
2。现在只需使用类名称从其他类调用此方法。
<强>例如强>
public class Test{
public static String s;
}
3。如果是多线程应用,则需要synchronization
。