【问题标题】:Creating a new instance of a class from another class从另一个类创建一个类的新实例
【发布时间】:2016-08-25 20:31:28
【问题描述】:

所以我被困在一些家庭作业上,试图从我的名为 records 的类中创建一个 Employee 类的实例。

public class Employee implements Comparable<Employee>

{
/* instance variables */
private String Name;
private String employeeNumber;


/**
 * Constructor for Employee
 */
public Employee(String employNum)
{
   super();
   this.employeeNumber = employNum;             
}

接下来我需要创建一个 Record 类来创建员工详细信息的 HashSet,这就是我需要帮助的地方。

public class Records
{
   private HashSet employeeSet;

   public Records()
   {
      Set<Employee> employeeSet = new HashSet<Employee>();
   }

然后我希望它有一种方法来添加新员工,然后将他们的记录放入集合中。

   public  enrollEmployee(String num)
   {
      Employee newEmp = new Employee(num);
      employeeSet.add(newEmp);
   }
}

我无法获得创建新员工的最后一点,它不会出现错误并且可以正确编译。只是没有新员工。 *添加employeeSet.add(newEmp);导致编译器警告,并且由于 NullPointerException 导致该方法无法运行,可能是因为实际上并未创建员工。

有关更多信息,当我创建员工时,如果仅输入员工编号,则名称应显示为“null”,但我仍需要存储该信息。

已编辑以更新信息。 Employee 类的更多细节我已经省略了,我只应该创建 Records 类。

最后一次更新,感谢您的帮助。阅读回复后,这就是我要为我工作的内容。

   public class Records
{
   private Set<Employee> employeeSet = new HashSet<Employee>();

   public Records()
   {

   }

   public void enrollEmployee(String num)
   {
      Employee newEmp = new Employee(num);
      employeeSet.add(newEmp);
   }
}

【问题讨论】:

  • “我无法获得最后一点来创建新员工。”。你有错误吗?到底出了什么问题?
  • 你的Set&lt;String&gt; 应该是Set&lt;Employee&gt; 对吧?

标签: java class methods constructor hashset


【解决方案1】:

这是基于您在 cmets 中寻找的新解决方案

public class Record
  {
    private Set<Employee> employeeSet = new HashSet<Employee>();

    public Record()
    {
        newEmployee("1");
        newEmployee("2");
        newEmployee("3");
    }

    public void newEmployee(String employNumber)
    {
        Employee newEmp = new Employee(employNumber);
        employeeSet.add(newEmp);
    }
 }

从未调用过您创建的方法...因此从未创建过员工。因此,通过调用 Record Constructor 中的 newEmployee 方法,创建了一个新员工

【讨论】:

  • 感谢您的回复。我已经更改了系列创作,实际上我也刚刚提出了这一点。我遇到的主要问题是代码不会创建新员工。我不能更改 Employee 类,我只应该创建新的 Records 类。其中还有很多细节我没有包括在内,例如 compareTo。
  • 当您通过构造函数实例化记录时创建一个员工// 我根据您告诉我的内容更改了我的解决方案
猜你喜欢
  • 1970-01-01
  • 2018-11-02
  • 2023-04-02
  • 2020-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-16
相关资源
最近更新 更多