gpt4 book ai didi

java - 无法解析 ArrayList 的构造函数

转载 作者:行者123 更新时间:2023-12-01 21:22:04 24 4
gpt4 key购买 nike

我创建了一个新类和一个构造函数,如下所示:

public class Person {
String firstName;
String lastName;
String pass;

public Person(){}

public Person(String f,String l,String p){
firstName=f;
lastName=l;
pass=p;
}
}

然后我在MainActivity中创建了一个对象:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

ArrayList<Person> list = new ArrayList<Person>();
ArrayList<Person> list2 = new ArrayList<Person>("a","b","c");
}

问题是我有一条这样的消息:

Cannot resolve constructor 'ArrayList(java.lang.String,java.lang.String,java.lang.String)'

在 Person 类中,构造函数从未被使用过。

我做错了什么?

最佳答案

您正在构建一个人员列表。但是您正在提供创建一个人的参数。

你可以将其写为:

list2 = new ArrayList<>(Arrays.asList(new Person("a","b","c")));

或者:

list2 = new ArrayList<>(Collections.singletonList(new Person("a","b","c")));

在其他语言中,可能存在“隐式”(在幕后)查找“匹配”功能;这样当您提供参数来创建 Person 时,就会调用相应的构造函数。

在 Java 中,这是行不通的。并注意:即使这可行; ArrayList没有有一个构造函数来获取对象并将它们添加到列表中。

长话短说:您必须使用不同的语法。您可以引用其他人的建议;或者如果您更喜欢“oneliner”(但“更昂贵”)解决方案......尝试使用我的建议。当然:研究我正在使用的库函数的 javadoc;因为他们对返回的列表设置了某些限制。

并从 4caSTLe 获取输入:最好在左侧强制执行列表类型,例如:

List<Person> list2 = Arrays.asList<>(new Person("a","b","c"));

含义:如果可能,使用基础集合接口(interface);而不是它们背后的具体类。这将允许您稍后更改实际的实现。但是,如果您在各处使用“ArrayList”,则必须更改您修复该类型的每个位置。因此,最好的做法是尽可能避免这种情况!

关于java - 无法解析 ArrayList 的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38982845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com