簡體   English   中英

無法從另一個類[Java]調用方法

[英]Unable to call a method from another class [Java]

因此,我有三個類:Main,UserGroup和User。 在User中,我有三種在UserGroup類中調用的方法,一種是我試圖在Main類中調用的方法。 使用User類中的方法,我在UserGroup中創建了一個ArrayList,每個元素中都有三個不同的字符串(對不起,如果用錯術語,很抱歉),並使用User類中的final方法,我試圖更改這些字符串之一。

我嘗試調用的方法是

public class User {
  String UserType;

  //some code removed

  public void setUserType(String x) {
      if ("user editor admin".contains(x)) {
          UserType = x;
      } 
      else {
        UserType = "editor";
      }
  }
}

我試圖通過將其放在main上的一個名為Administrators的UserGroup上來調用它:

editors.setUserType("editor");

因為這是我從UserGroup調用其他方法的方式,但出現錯誤

error: cannot find symbol
        editors.setUserType("editor");
                      ^
symbol:   method setUserType(String)
location: variable editors of type UserGroup
1 error

編輯(更多主要內容):

我通過創建一個UserGroup編輯器

UserGroup editors = new UserGroup();

並添加值到ArrayList與

editors.addValues();

然后打印元素

editors.printData();

所有這些都可以使用,因為這些方法在UserGroup類中。

您可能想要閱讀Java中方法重載的主題

它尋找帶有標題的方法

public void setUserType()

但是你只定義了方法

public void setUserType(String x)

因此,您應該使用類似以下內容的方法來調用創建的方法:

editors.setUserType(“ Foobar”)

看來編輯者不是實際的用戶。 也許這是一個List <用戶>,在這種情況下,它將是

editors.get(i).setUserType(x)

UserGroup是否包含User對象的集合?

setUserType(...)在User上定義,但似乎在UserGroup上沒有定義。

有兩種方法可以完成您想做的事情。

  1. 從您的UserGroup中獲取User對象的列表,然后分別在main中分別調用setUserType(...)。 就像是:

     List<User> users = editors.getUsers() //assuming UserGroup.getUsers() exists for(User user : users) user.setUserType("whatever"); 
  2. 向UserGroup添加一個名為setUserType(...)的方法,該方法將遍歷其User對象集合並設置類型:

     public setUserType(String type) { for(User user : users) //assuming you have a collection of User objects user.setUserType(type); 

    }

如果我的描述不正確,請添加UserGroup的完整實現(或至少顯示用戶如何包含的部分),我們可以提供更多信息。

暫無
暫無

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

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