Java—从一个类到另一个类的变量值
我想将List类型的变量值(变量名为seznamRacunov)从一个类传输到另一个类 第一类Java—从一个类到另一个类的变量值,java,variables,getter-setter,Java,Variables,Getter Setter,我想将List类型的变量值(变量名为seznamRacunov)从一个类传输到另一个类 第一类 public class UvoziRacun { private String potRacuna; private List<String> seznamRacunov = new ArrayList(); public void setRacun(List<String> seznamRacunov) { this.seznamRacuno
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){}
}
}
方法seznamRacunov.add(potRacuna)代码>在类1中将一个值存储到seznamRacunov中,但是list的值在我调用getter的类2中没有传递。怎么了
方法seznamRacunov.add(potRacuna);将值存储到seznamRacunov中
在类1中,但list的值在类2中不传递,其中I
叫盖特
这是因为,您试图get()
您的列表
,而不调用方法-showDailog()
,该方法反过来调用您的add()
方法来填充列表
- 在使用
get
方法实际获取list
之前,请确保调用此方法-showDailog()
来填充列表
- 或者,如果您向类中添加一个
构造函数
,它将执行初始化列表
的任务,这会更好。然后可以使用该构造函数创建一个实例,这样就不会有任何问题
PS:-您应该始终至少有一个0-arg构造函数来初始化字段,而不是让编译器替您处理此任务
还有一件事,您永远不应该通过使用空的
catch块来嵌入您的异常。否则就没有抓住它们的意义了。添加一个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
声明。您在LHS上使用的是generic type List
,在RHS上使用的是Raw type ArrayList
。这是你应该避免的事情
两边都有通用类型:-
private List<String> seznamRacunov = new ArrayList<String>();
private List seznamRacunov=new ArrayList();
您想要值还是引用?我想要列表的值存储在第一个类中。谢谢您的建议,我将尝试第一个解决方案。在第二个解决方案中,我不想再显示一次对话框,所以这不是一个好主意。@Strausa然后您需要定义一个构造函数来初始化列表。因为您仅在showDailog
方法中初始化它。。
private List<String> seznamRacunov = new ArrayList<String>();