簡體   English   中英

無法推斷ArrayList <>的類型參數

[英]cannot infer type arguments for ArrayList<>

我正在嘗試制作一個包含另一個類的對象,名稱和轉向的ArrayList。 類似於python的字典。

self.user1 = {"user":user1,"name":empty,"turn":empty}

所以我制作了一個具有3個值的類。

class User{
public userInterface user1;
String name;
String turn;

public User(UserInterface user1,String name,String turn) {
    this.user1=user1;
    this.name=name;
    this.turn=turn;
}}

我試圖在主類的構造函數中調用它,如下所示:

public class MainClassConstructon{
ArrayList<User> user1;
ArrayList<User> user2;

MainClassConstructon(UserInterface user1 ,UserInterface user2){
     this.user1 = new ArrayList<>(new User(user1,empty, empty));
     this.user2 = new ArrayList<>(new User(user2,empty, empty));

但是它會引發一個錯誤,說:無法推斷ArrayList <>的類型參數。

ArrayList具有三個構造函數:

public ArrayList(int initialCapacity)
public ArrayList()
public ArrayList(Collection<? extends E> c)

User既不是int也不是Collection ,並且您要傳遞參數,因此中間構造函數也不適用。

但這不是重點,您的目標是創建一個用戶列表,因此您無需使用當前的工作,而只需使用一個列表,只需添加用戶即可:

public class MainClassConstructon{
  List<User> users; // Or ArrayList, doesn't really matter

  MainClassConstructon(UserInterface user1 ,UserInterface user2){
    users = new ArrayList<>(); // Diamond syntax, requires Java 7+
    users.add(new User(user1, "", ""));
    users.add(new User(user2, "", ""));
  }
}

你可以這樣嘗試

public class MainClassConstructon {
    ArrayList<User> user1 = new ArrayList<>();
    ArrayList<User> user2 = new ArrayList<>();

    MainClassConstructon(UserInterface user1, UserInterface user2) {
        this.user1.add(new User(user1, "", ""));
        this.user2.add(new User(user2, "", ""));
    }
}

我不是Java開發人員,但建議您嘗試使用Arraylist API。

這是我在網上找到的,如果沒有幫助的話,對不起:)

import java.util.*; 
public class ArrayListDemo { public static void main(String args[]) { 
// create an array list 
ArrayList al = new ArrayList(); 
System.out.println("Initial size of al: " + al.size()); 
// add elements to the array list 
al.add("C"); 
al.add("A"); 
al.add("E"); 
al.add("B"); 
al.add("D"); 
al.add("F"); 
al.add(1, "A2"); 
System.out.println("Size of al after additions: " + al.size());

 // display the array list System.out.println("Contents of al: " + al);

 // Remove elements from the array list al.remove("F");
al.remove(2); 
System.out.println("Size of al after deletions: " + al.size());
 System.out.println("Contents of al: " + al); 
}
}

好吧,我是這樣的:

this.user1 = new ArrayList<>(Arrays.asList(new User(user1,empty, empty)));

並能夠通過以下方式訪問它:

t.user1.get(0).name="bla bla";

暫無
暫無

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

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