无法从另一个类调用方法[Java]

时间:2015-11-05 18:24:08

标签: java class subclass

所以我有三个类: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";
      }
  }
}

我试图在一个叫做管理员的UserGroup上调用它,通过把它放在main中来包含arraylist:

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类中。

3 个答案:

答案 0 :(得分:0)

您可能想要阅读主题overloading of methods in Java

它使用标题

查找方法
public void setUserType()

但您只定义了方法

public void setUserType(String x)

因此,您应该使用以下内容调用您创建的方法:

<强> editors.setUserType( “Foobar的”)

答案 1 :(得分:0)

看起来编辑不是真正的用户。也许它是一个List&lt;用户&gt;在这种情况下,它将是

fn = fn === undefined && scope.isFn(ary)
    ? <Function> ary
    : fn;

答案 2 :(得分:0)

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);
    

    }

  3. 如果我错误地描述了这一点,请添加UserGroup的完整实现(或至少包含显示用户如何包含的部分),我们可以提供更多信息。