这是我遇到错误的测试类,我无法弄清楚究竟是什么。
import java.util.*;
public class EmployeeTest
{
public static void main(String[] args) {
Employee e = new Employee();
e.setId("100012");
e.setLastname("Smith");
ResponsibilityDecorator d;
d = new Recruiter(e);
d = new CommunityLiaison(e);
d = new ProductionDesigner(e);
System.out.println(e.toString());
}
}
这是链接到测试类的类
public class Employee
{
String id;
String lastname;
Employee(String id, String lastname)
{
this.id=id;
this.lastname=lastname;
}
EmploymentDuties eduties=new EmploymentDuties();
public EmploymentDuties getDuties()
{
return eduties;
}
public String toString(){
return "Duties for this employee: "+eduties.jobtitles;
}
public void setId(String id)
{
this.id = id;
}
public void setLastname(String lastname)
{
this.lastname = lastname;
}
}
答案 0 :(得分:8)
Employee
中没有 no-args 构造函数。添加参数以使用EmployeeTest
Employee e = new Employee("100012", "Smith");
陈述
e.setId("100012");
e.setLastname("Smith");
然后是多余的,可以删除。
答案 1 :(得分:1)
您的类Employee只定义了一个构造函数:Employee(String,String)。确保从EmployeeTest中调用它或定义一个无参数构造函数。
答案 2 :(得分:0)
默认构造函数是java在没有你提供的构造函数的情况下提供的构造函数。
提供任何构造函数后,将不再提供默认构造函数。
你创建了构造函数
Employee(String id, String lastname)
{
并使用like
Employee e = new Employee(); //not possible
答案 3 :(得分:0)
默认构造函数是自动生成的无参数构造函数,除非您定义另一个构造函数。
这是默认构造函数:
Employee() {}
然后你可以实例化像:
这样的对象Employee e = new Employee();
如果显式定义至少一个构造函数,则不会生成默认构造函数。