当前位置: 首页 > 知识库问答 >
问题:

试图复制ArrayList但我收到警告

司马德水
2023-03-14

我正在制作一个程序,在这个程序中,你可以创建配料,也可以用这些配料创建菜单。

 //Attributes
    public UserManager userManager;
    
    private StaffModuleControllerGUI staffModule;
    
    public InventoryModuleControllerGUI inventoryModule;
    
    public MenuModuleControllerGUI menuModule;
    
    public OrderModuleControllerGUI orderModule;
    
    //private InventoryManager inventoryManager; 
    
    private Stage loginStage;
     
    //@FXML Attributes:
    
    @FXML
    private PasswordField pFLogin;

    @FXML
    private Button btnLogIn;

    @FXML
    private TextField txtUserLogin;

    @FXML
    private Pane loginPane;
    
    @FXML
    private Pane taskManagerPane;
    
    
    public CucharitaGUI() 
    {
        staffModule = new StaffModuleControllerGUI(this);  
        inventoryModule = new InventoryModuleControllerGUI(this);
        menuModule = new MenuModuleControllerGUI(this);
        orderModule = new OrderModuleControllerGUI(this);
        userManager = new UserManager();
        //inventoryManager = new InventoryManager();
        loginStage = new Stage();
        
    }
    @FXML
    private void openInventoryModule(ActionEvent event) throws IOException 
    {
    
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("inventoryModule.fxml"));
        fxmlLoader.setController(inventoryModule);
        Parent root = fxmlLoader.load();
        Scene scene = new Scene(root);
        loginStage.setScene(scene);
        loginStage.setTitle("InventoryModule");
        loginStage.show(); 
        
        inventoryModule.initializeTableView();
        inventoryModule.initializeComboBox();
    }

    @FXML
    void openMenuModule(ActionEvent event) throws IOException {
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("menuModule.fxml"));
        fxmlLoader.setController(menuModule);
        Parent root = fxmlLoader.load();
        Scene scene = new Scene(root);
        loginStage.setScene(scene);
        loginStage.setTitle("MenuModule");
        loginStage.show(); 
        
        menuModule.initializeTableView();
        menuModule.initializeComboBox();
    }

  //Attributes
  private Stage inventoryModuleStage;
   
  private ObservableList<Ingredient> observableInventoryList;
      
  private ObservableList<String> observableUnitsList;
  
  public InventoryManager inventoryManager;
  
  private CucharitaGUI cucharitaGUI;
  
      
      public InventoryModuleControllerGUI(CucharitaGUI cucharitaGUI){
          
          setInventoryModuleStage(new Stage());
          inventoryModulePane = new Pane();
          inventoryManager = new InventoryManager();
          this.cucharitaGUI = cucharitaGUI;
          
      }
public class InventoryManager {
    
    public ArrayList<Ingredient> ingredients;
    
    public InventoryManager()
    {
        ingredients = new ArrayList<Ingredient>();
    }

    public ArrayList<Ingredient> getIngredients()
    {
        return ingredients;
    }
    ArrayList<Ingredient> newIngredientsToPreview;                     
    public MenuManager menuManager;

    private CucharitaGUI cucharitaGUI;
    
    private boolean dishNameReadyToCreate=false;
    
    private boolean dishIngredientsReadyToCreate=false;

    public MenuModuleControllerGUI(CucharitaGUI cucharitaGUI){

        setMenuModuleStage(new Stage());
        menuModulePane = new Pane();
        menuManager = new MenuManager();
        ArrayList<Ingredient>ingredientClone=cucharitaGUI.
        inventoryModule.inventoryManager.getIngredients();
        newIngredientsToPreview= (ArrayList<Ingredient>)ingredientClone.clone();
        this.cucharitaGUI = cucharitaGUI;       
    }
newIngredientsToPreview= (ArrayList<Ingredient>)ingredientClone.clone();

有人知道怎么修吗?

共有1个答案

鄢英哲
2023-03-14

不要使用clone()。它坏得可怕。

使用复制构造函数:

newIngredientsToPreview = new ArrayList<>(ingredientClone);
 类似资料:
  • 这是我的hibernate配置xml文件,我已经设置了,但仍然收到警告: 警告:不建议在没有服务器身份验证的情况下建立SSL连接。根据MySQL 5.5.45+、5.6.26+和5.7.6+的要求,如果未设置显式选项,默认情况下必须建立SSL连接。为了符合不使用SSL的现有应用程序,verifyServerCertificate属性设置为'false'。您需要通过设置usessl=false来显式

  • 我上传了一个非常简单合法的代码,它是正确的,但是当我从另一台计算机中提取时,XML文件被着色为红色两台计算机都具有相同版本的软件所有以 Android系统, app:布局, 工具:…是红色的

  • 我是张贴这个问题后,尝试了许多选项,从两天。下面是我尝试的选项。 null

  • 问题内容: 我的尺寸为10。我将其分配l1给新列表引用类型。威尔和指向同一个对象吗?还是分配给对象的副本l2? 使用引用时,如果我更新列表对象,它也会反映l1引用类型中的更改。 例如: 除了创建2个列表对象并在集合上进行从旧到新的复制之外,没有其他方法可以将列表对象的副本分配给新的引用变量吗? 问题答案: 是的,分配将刚刚复制值的(这是引用)。它们都将引用相同的对象。 但是,创建浅表副本非常简单:

  • 问题内容: 我正在编写Java客户端(在weblogic 10.3上)以调用安全的Web服务。我已获得安装在cacerts,DemoIdentity.jks和DemoTrust,jks中的客户端证书。在我的Weblogic中,我已将密钥库设置为DemoIdentity和DemoTrust。在weblogic控制台中,我已将“双向客户端证书行为:”设置为“已请求但未强制执行的客户端证书”。对于“启用

  • 嘿,我正在尝试将文本从回收器视图项目复制到剪贴板中,当我尝试在活动中执行此操作时,它的工作原理,但当我尝试查看者中的代码时,我得到了未解决的参考:CLIPBOARD_SERVICE错误这里是代码: