簡體   English   中英

堅持如何添加到另一個班級的列表

[英]Stuck on how to add to a list in another class

我有一個類 DB,其中包含一個列表:

private List<User> users;

以及允許將用戶添加到列表的 addUser 方法

public User addUser(String name) {

另一個類 User 需要創建 User 類的實例,所以我嘗試使用以下代碼:

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

但它返回的錯誤是我無法對非靜態方法進行靜態引用。 我不知所措,因為要創建 User 類的實例,我必須將其放入列表中,但是由於列表是私有的,我必須使用 DB 的方法,但是如果沒有得到錯誤...有什么辦法可以解決這個問題嗎?

這里的這個函數是以靜態方式調用addUser

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

但是下面的這個函數需要實例化一個對象才能調用它(非靜態)

public User addUser(String name) { ... }

所以改成

public static User addUser(String name) { ... }

或創建一個 DB 實例並調用該方法

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

似乎有些基礎知識您不清楚。

  1. 成員始終是私有的,要與它們交互,您應該創建公共的 setter 和 getter。

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

    public void getUsers(List users){ this.users=users; }

  2. 作為一個好的編碼標准,命名應該描述提供特定動作的行為因此

用戶添加用戶(字符串名稱)

考慮到它的實際實現,因為給定將 User 添加到列表中,這似乎非常模棱兩可。

  1. 如果 DB 類是一個依賴項,那么它應該被實例化讓我們假設您從 main 調用此代碼

    用戶用戶=新用戶(); DB dbInstance=new DB(); dbInstance.setUsers(new ArrayList()); dbInstance.getUsers().add(user);

提供更具體的答案,等待進一步要求的詳細信息

暫無
暫無

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

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