有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何引用将对象添加到对象内部的ArrayList

在JavaFX中,我创建了一个运动跟踪系统

我的对象用户有许多食物和练习,它们存储为ArrayList

public class User {

    private ArrayList<Food> listofFood = new ArrayList<Food>();
    private ArrayList<Exercise> listofExercise = new ArrayList<Exercise>();
    private String um;

    public User(String u) {
        this.um = u;
    }
    public void addNewFood(Food f) {
        listofFood.add(f);
    }
    public void addNewExercise(Exercise ex) {
        listofExercise.add(ex);
    }
}

食物和运动在结构上是相似的

public class Food {
    private String name;

    public Food(String n) {
        this.name = n;
    }
    public void setNameFood(String n) {
        this.name = n;
    }
}

在我的MainApp类中,我创建了一个用户

public class MainApp {
    public User UserLoggedIn;
}

我使用控制器传入这个类的一个实例

public class MainApp {
    MyController c = loader.getController();
    c.setDialogStage(dialogStage);
    c.setApp(this); 
}

在MyController类中,我设置了应用程序

public class MyController { 
    public void setApp(MainApp app) {
        this.mainApp = app;
    }
}

。。。然后我在MyController中引用了它

public class MyController { 
    mainApp.UserLoggedIn.addNewFood((new Food(nameField.getText())));
}         

这会产生空指针异常


共 (1) 个答案

  1. # 1 楼答案

    UserLoggedIn从未实例化,因此它将始终为null。为MainApp()创建一个默认构造函数,该构造函数只创建用户对象。然后创建一个名为getUser()的getter方法,该方法返回用户对象。此外,Java的惯例是使用camel case。所以,UserLoggedIn应该是UserLoggedIn

      public class MainApp 
      {
         private User userLoggedIn;
    
         public MainApp()
         {
             userLoggedIn = new User("john doe");
         }
    
         public User getUserLoggedIn()
         {
             return userLoggedIn;
         }
      }
    
      public class MyController 
      { 
        MainApp mainApp = new MainApp();
        mainApp.getUserLoggedIn().addNewFood(new Food(//enter datum here));
      }