Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 陷入了如何添加到另一个类的列表中_Java_List_Class_Methods - Fatal编程技术网

Java 陷入了如何添加到另一个类的列表中

Java 陷入了如何添加到另一个类的列表中,java,list,class,methods,Java,List,Class,Methods,我有一个类DB,它包含一个列表: private List<User> users; 另一个类User需要创建User类的实例,因此我尝试使用以下代码: public User(String name) { DB.addUser(name); 但它返回的错误是,我不能对非静态方法进行静态引用。我不知所措,因为要创建User类的实例,我必须将其放入列表中,但由于列表是私有的,我必须使用DB的方法,但我不能这样做而不出错。。。有什么方法可以解决这个问题吗?这个函数正在

我有一个类DB,它包含一个列表:

private List<User> users;
另一个类User需要创建User类的实例,因此我尝试使用以下代码:

public User(String name) {
        DB.addUser(name);

但它返回的错误是,我不能对非静态方法进行静态引用。我不知所措,因为要创建User类的实例,我必须将其放入列表中,但由于列表是私有的,我必须使用DB的方法,但我不能这样做而不出错。。。有什么方法可以解决这个问题吗?

这个函数正在以静态方式调用
addUser

public User(String name) {
    DB.addUser(name);
}
但是下面的函数需要实例化一个对象才能调用它(非静态)

所以把它改成

public static User addUser(String name) { ... }
或者创建一个DB实例并调用该方法

public User(String name) {
    DB db = new DB();
    db.addUser(name);
}

似乎有些基础知识你还不清楚

  • 成员总是私有的,为了与他们交互,你应该创建公共的setter和getter

    公共列表getUsers(){ 返回用户; }

    公共用户(列表用户){ 这个。用户=用户; }

  • 作为一个好的编码标准,命名应该描述提供特定操作的行为 因此

  • 用户addUser(字符串名称)

    考虑到它的实际实现,将用户添加到列表中似乎非常模糊

  • 若DB类是一个依赖项,那个么它应该被实例化 假设您是从main调用此代码

    用户=新用户(); DB dbInstance=new DB(); setUsers(新的ArrayList()); dbInstance.getUsers().add(用户)


  • 要提供更具体的答案,等待进一步请求的详细信息

    您能否在DB static中使用
    addUser
    功能?@RishavKundu,这是没有意义的。很明显,它是一个改变状态的方法。您需要创建一个DB实例,或者使addUser静态化,为什么不向DB添加一个getUsers()方法来返回列表的引用,然后调用getUsers().add(新用户(someName));亚瑟,
    addUser
    到底做什么?在你的问题中添加代码。第二个选项没有意义。为什么每次创建新用户时都要创建新数据库?。。?我没有考虑他的问题的应用逻辑,我在这里只是为了修复一个编译错误。他不是在寻求逻辑方面的帮助
    public static User addUser(String name) { ... }
    
    public User(String name) {
        DB db = new DB();
        db.addUser(name);
    }