[英]Java ArrayList add class object to list if object name is not already in the list?
[英]Java:Add name of each instance of object to list
正如标题所说,我想将每个新创建的人名的对象保存在列表中:
到目前为止,这是我的代码
package javaapplication4;
import java.util.*;
public class Person {
private String namePerson;
static List personList = new ArrayList();
{
personList.add(getPersonName());
}
public Person(String namePerson){
this.namePerson = namePerson;
}
public void setPersonName(String namePerson){
this.namePerson = namePerson;
}
public String getPersonName(){
return namePerson;
}
public void setPersonList(List personList){
this.personList= personList;
}
public static List getPersonList(){
return personList;
}
每次我创建一个人对象时,它都会被添加为列表中的“空”点(当我使用 println 时)。
我如何将其更改为新对象Person
的名称
Person Guy = new Person("NameOfGuy"); then list must be [NameOfGuy].
{
personList.add(getPersonName());
}
以上称为实例初始值设定项。 它在执行构造函数之前执行。 那时, getPersonName
将返回 null 因为您尚未设置namePerson
的值。
将其移动到构造函数中
public Person(String namePerson){
this.namePerson = namePerson;
this.personList.add(namePerson);
}
旁注:使用原始类型是一种不好的做法。 您正在使用原始列表。 它必须像
List<String> personList = new ArrayList<>();
正如@user7 所指出的,您将名称添加到列表中的错误位置。 您应该做的是,在创建人的对象时将人的姓名添加到列表中,即在您的构造函数中。 用这个替换你的构造函数:
public Person(String namePerson){
this.namePerson = namePerson;
personList.add(namePerson);
}
您可以完成对Person类进行以下更改的工作:
import java.util.*;
public class Person {
private String namePerson;
static List<String> personList = new ArrayList<>();
public Person(String namePerson) {
this.namePerson = namePerson;
personList.add(this.namePerson);
}
public void setPersonName(String namePerson) {
this.namePerson = namePerson;
}
public String getPersonName() {
return namePerson;
}
public void setPersonList(List personList) {
this.personList = personList;
}
public static List getPersonList() {
return personList;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.