我想将 List 类型的变量值(变量名称为 seznamRacunov)从一个类传输到另一个类。
1 级
public class UvoziRacun
{
private String potRacuna;
private List<String> seznamRacunov = new ArrayList();
public void setRacun(List<String> seznamRacunov)
{
this.seznamRacunov = seznamRacunov;
}
public List<String> getRacun()
{
return seznamRacunov;
}
public String getPotRacuna()
{
return potRacuna;
}
public void showDailog()
{
try
{
JFileChooser racun = new JFileChooser();
racun.setCurrentDirectory(new File(""));
racun.setFileFilter(new javax.swing.filechooser.FileFilter()
{
public boolean accept(File f)
{
return f.getName().toLowerCase().endsWith(".xml") || f.isDirectory();
}
public String getDescription()
{
return "XML Datoteka";
}
});
//racun.setMultiSelectionEnabled(true);
int r = racun.showOpenDialog(new JFrame());
if (r == JFileChooser.APPROVE_OPTION)
{
potRacuna = racun.getSelectedFile().getPath();
seznamRacunov.add(potRacuna); //value is stored
}
//System.out.print("Racuni: " + seznamRacunov);
}
catch(Exception ex){}
}
}
2级
public class PrikaziRacune extends javax.swing.JFrame
{
UvoziRacun rac = new UvoziRacun();
public PrikaziRacune()
{
initComponents();
try
{
System.out.print(rac.getRacun()); // value is null, why?
//jLabel2.setText();
}
catch(Exception ex){}
}
方法seznamRacunov.add(potRacuna);
将值存储到类1中的seznamRacunov中,但列表的值没有传递到我调用getter的类2中。怎么了?
最佳答案
Method seznamRacunov.add(potRacuna); store a value into seznamRacunov in Class 1, but the value of list does not pass in class 2 where I called getter.
那是因为,您试图get()
您的List
,甚至没有调用方法 - showDailog()
,后者又调用您的add()
方法来填充列表。
确保在使用
get
实际获取List
之前调用此方法 -showDailog()
来填充列表> 方法或者,如果您向类添加一个
构造函数
,它会执行初始化
您的List
的任务,那就更好了>。然后您可以使用该构造函数
创建一个实例,因此不会有任何问题。
PS: - 您应该始终至少有一个0-arg构造函数
来初始化您的字段,而不是让
编译器处理此任务为你。
还有一件事,您永远不应该通过使用空
catch block 来吞噬异常。否则的话,捕获他们就没有意义了。添加一个 printStackTrace()
调用来代替。
public PrikaziRacune() {
initComponents();
try
{
rac.showDailog(); // Will populate the list
System.out.print(rac.getRacun()); // You can get the value here.
//jLabel2.setText();
}
catch(Exception ex) {
ex.printStackTrace();
}
}
- 此外,请检查第一个类中的
ArrayList
声明。您在左侧使用通用类型List
,在右侧使用原始类型ArrayList
。这是你应该避免的事情。
两侧都有Generic
类型:-
private List<String> seznamRacunov = new ArrayList<String>();
关于Java - 从一个类到另一个类的变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12950781/