0

我有一个字符串,我想让它对所有类都可用。每个类都可以修改字符串,当我再次使用字符串时,修改将保留在字符串中。我有 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,则该字符串对主类不可用。

4

3 回答 3

0

假设你有一个类加载器然后

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");
于 2012-08-07T06:52:33.850 回答
0

将字符串公开,并使用静态导入将其导入 ActionListener,或导入类并使用引用BasicGuiOnlyText.outputHtml

请记住,除非您指定变量所在类的名称空间,否则 JVM 将无法解析它。

于 2012-08-07T06:53:29.683 回答
0

如果它只是一个字符串,我希望您使用类似 a 的东西Property file您可以在其中写入然后从中读取。但是如果你想把它放到一个类而不是文件中......那么请执行以下操作。

1.classpublic static String variable. _

2.现在只需使用类名从另一个类中调用此方法。

例如:

public class Test{

    public static String s;


 }

3.多线程应用程序的情况下,synchronization将需要。

于 2012-08-07T06:55:04.253 回答