[英]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上沒有定義。
有兩種方法可以完成您想做的事情。
從您的UserGroup中獲取User對象的列表,然后分別在main中分別調用setUserType(...)。 就像是:
List<User> users = editors.getUsers() //assuming UserGroup.getUsers() exists for(User user : users) user.setUserType("whatever");
向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.