使一个字符串可用并可修改为java中的所有类

时间:2012-08-07 06:46:23

标签: java string

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

3 个答案:

答案 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