获取在try方法中设置的Java bean

时间:2014-01-05 18:04:04

标签: java javabeans

我正在try方法中设置一个java bean。正在读取文本文件,并且读取的文本用于设置java bean。

public class mainDisplay extends JPanel{



private imageDisplay id;

public mainDisplay()
{

    String path;



      while (1==1) {

          try {

              FileInputStream roadMap = new FileInputStream("C:\\Users\\Public\\Desktop\\write.txt"); //path to the text file generated
              DataInputStream route = new DataInputStream(roadMap); //importing the data from the text file
              BufferedReader readMe = new BufferedReader(new InputStreamReader(route));  
              pathOfspeed = readMe.readLine();
              //  id = new imageDisplay(path);

              Constants.getInstance().getBean().setPath(path);
              try {
                  Thread.sleep(40);
              } catch (InterruptedException e) {
                  e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
              }




          } catch (Exception e) {                   
              System.err.println("error:" + e.getMessage());
          }

          System.out.println(Constants.getInstance().getBean().getPath());


      }



}

这是来自文本文件阅读器的代码和设置Bean的代码。

以下是bean类的代码:

public class Paths implements java.io.Serializable{

    public String url;

    public Paths(){}

    public void setPath(String name){this.url=name;}

    public String getPath(){return url;}

}

然后我有我的常量类

public class Constants {
private static Constants instance;
private Paths bean;

private Constants() {
    bean=new Paths();
}

public static synchronized Constants getInstance() {
    if (instance == null) {
        instance = new Constants();
    }
    return instance;
}

public Paths getBean(){
    return bean;
}

public Paths setBean(Paths p){
    bean = p;

    return p;
}

}

当我尝试从另一个类中获取Bean时,我的问题就出现了:

String imageUrl=Constants.getInstance().getBean().getPath();

    public test () {

        System.out.println(imageUrl);

    }

我每次都会得到null。文件阅读器需要保持不变,因为文本文件中的行每分钟都在变化,我需要传递给另一个使用它的类。

有人可以就下一步做什么给我一些建议吗?

由于

1 个答案:

答案 0 :(得分:2)

问题出在你的Constants类中。

每次你这样做:

Constants.Bean

它返回一个新创建的Path类,当然它包含一个返回到你的getPath方法的null url变量。

您应该为Constants类使用Singleton。

修改Constants类:

public class Constants {
  private static Constants instance;
  private Paths bean;

  private Constants() {
     bean=new Paths();
  }

  public static synchronized Constants getInstance() {
    if (instance == null) {
      instance = new Constants();
    }
    return instance;
  }

  public Paths getBean(){
    return bean;
  }

  public Paths setBean(Paths p){
    bean = p;
  }

}

使用以下方法写入Paths变量:

Constants.getInstance().getBean().setPath("your path");

阅读Paths变量;

Constants.getInstance().getBean().getPath();