簡體   English   中英

如何將 object 數組傳遞給另一個 class 中的方法,以便此方法將其用作普通數組?

[英]How can I pass an object array to a method in another class so this method uses it as a normal array?

我對 java 和一般編程很陌生,所以很抱歉,如果我混淆了一些概念,在我的代碼中我有一個名為cr的 object,它是 class 菜單中的一個數組,該菜單由 class ControllerRoute構造,我需要將此實例傳遞給一個方法在執行 CRUD 更新和刪除過程的 class UpdateAndDelete中,但該方法中的代碼不是作為數組讀取,而是作為 object ControllerRoute讀取。 我確實嘗試在參數中使用不同的名稱並使用super.cr但它對我不起作用。

Menu 是使用 CRUD 的不同操作,但這里是更新部分,這是給出問題的部分。

import javax.swing.JOptionPane;
public class Menu{
private ControllerRoute cr = new ControllerRoute(100);
UpdateAndDelete ud = new UpdateAndDelete();

   public void updateRoute(){
      ControllerRoute ur = new ControllerRoute(0);
      int id;
      id = Integer.parseInt(JOptionPane.showInputDialog(null,"Enter an Id"));
      ud.updateRoutes(id, cr);
      }
}

Route 與 ControllerRoute 一起是用於創建數組的類,object cr來自於此。

public class Route{
   private int id;
   private String name;
   
   public Route () {}
   
   public Route(int id, String name){
      this.id = id;
      this.name = name;
   }
}
public class ControllerRoute extends Menu{
   Route[] routes;
   
   public ControllerRoute(int size){
      routes = new Route[size];
   }
}

UpdateAndDelete 是要求cr執行更新和刪除數組部分的過程的方法。 這是在每個有cr的地方出現錯誤的地方,因為它要么找不到符號,要么不能將 cr 識別為數組。

import javax.swing.JOptionPane;
public class UpdateAndDelete{

   public Route updateRoutes(int id, ControllerRoute cr){
      int pos = -1;
      String nwname;
      for(int i=0; i<cr.length; i++){
           if(id == cr[i].getId()){
            pos=i;
           }
      }
      return null;
   }
}

發現錯誤:

錯誤:在行中找不到符號:for(int i=0; i<cr.length; i++){

UpdateAndDelete.java:14:錯誤:需要數組,但在以下行中找到 ControllerRoute :if(id == cr[i].getId()){

cr[pos] = new Route(id, nwname);

我首先嘗試更改參數,要么是數組的名稱,要么是 int、String、Array 之間的類型。 Route[] 最后一個是 ControllerRoute。

之后我嘗試使用 super.cr 看看我是否可以直接從菜單中獲取它,但是它給像.length 這樣的方法帶來了問題

import javax.swing.JOptionPane;
public class UpdateAndDelete extends Menu{

   public Route updateRoutes(int id, ControllerRoute cr){
      int pos = -1;
      String nwname;
      for(int i=0; i<super.cr.length; i++){
           if(id == super.cr[i].getId()){
            pos=i;
           }
      }
      return null;
   }
}

這給出了相同的錯誤。

我用 super 嘗試的另一件事是嘗試在UpdateAndDelete中創建另一個數組並使用 super.cr 將它的值轉換為它(例如:pj = super.cr ),但它給出了數組不兼容的錯誤控制器路由

ControllerRoute 不是數組。 它有一個屬性是數組。 嘗試在 ControllerRoute 中為路由編寫一個 getter 並使用它來獲取數組。 ud.updateRoutes(id, cr.getRoutes());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM