Java - 从一个类到另一个类的变量值

时间:2012-10-18 08:57:39

标签: java variables getter-setter

我想将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中传递。有什么问题?

1 个答案:

答案 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}}