繁体   English   中英

Java:将对象的每个实例的名称添加到列表中

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM