我想将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中,但是list的值不会在我调用getter的类2中传递。有什么问题?
答案 0 :(得分:1)
方法seznamRacunov.add(potRacuna);将值存储到seznamRacunov中 在Class 1中,但是list的值没有通过I类的2级 叫做getter。
多数民众赞成是因为,您试图get()
List
,而不是调用method - showDailog()
,add()
会调用您的showDailog()
方法来填充列表。
请确保在使用List
方法
get
之前,调用此方法 - constructor
来填充列表
或者,如果您向自己的班级添加initializing
会更好,List
执行constructor
0-arg constructor
的任务。然后,您可以使用letting
创建实例,因此您不会遇到任何问题。
PS : - 您应始终至少有empty
来初始化字段,而不是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();
}
}
catch块来扼杀你的异常。除此之外,抓住它们毫无意义。请改为添加ArrayList
电话。
generic type List
Raw type ArrayList
声明。您在LHS上使用Generic
,在RHS上使用private List<String> seznamRacunov = new ArrayList<String>();
。这是你应该避免的事情。双方都有{{1}}类型: -
{{1}}