我正在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。文件阅读器需要保持不变,因为文本文件中的行每分钟都在变化,我需要传递给另一个使用它的类。
有人可以就下一步做什么给我一些建议吗?
由于
答案 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();