[英]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.