我有一个简单的问题,我无法找到答案。我已将此条目添加到列表中:
Employee.add(new BackEndDeveloper(100, "Emmanuel", "Santana"));
Employee.add(new FrontEndDeveloper(100, "Luis", "Valero"));
Employee.add(new Intern(10, "Erick", "Lara"));
我需要检索以下信息:
"Employee ID", "First name", "Last name", "Salary", "Employee Type"
我正在使用类似的东西在里面打电话给他们'员工':
public int getEmployeeID() {
return EmployeeID;
}
但我怎样才能获得员工类型? (BackEndDev,FrontEndDev,实习生)
答案 0 :(得分:1)
您只需使用getClass():
即可BackEndDeveloper dev = new BackEndDeveloper(100, "Emmanuel", "Santana");
System.out.println(dev.getClass()); //print packageName.BackEndDeveloper
注意:如果您只想BackEndDeveloper
,可以使用getClass().getSimpleName()
。
System.out.println(dev.getClass().getSimpleName()); //print BackEndDeveloper
答案 1 :(得分:1)
我会回答你的问题,为什么你需要为每个不同的员工类型提供不同的对象?在创建子类时你应该问自己的问题是我要为这个新对象提供额外的功能(记住继承就是你想为对象提供特化,https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html)。你可能不会通过在Employee对象上设置一个属性来实现你想要的东西,也许是一个Enum for EmployeeType?
Employee.add(new Employee(100, "Emmanuel", "Santana", EmployeeType.BackEndDeveloper));
然后你可以通过getter访问它,就像你对id一样吗?
虽然getClass()在技术上适用于所提供的场景,但每次要添加新类型的员工时,创建和维护额外类的开销是否值得?如果您想要更改类名,但实施中的某些内容依赖于它等,则存在风险。
答案 2 :(得分:0)
要取回类型,您可以调用getClass()
List<Employee> employees;
for(Employee e : employees){
System.out.println(e.getClass()); //will print Backend/Frontend depending on what type it is
}
答案 3 :(得分:-1)
如果您的目标只是显示Employee
信息,则可以简单地覆盖toString()
方法。
这样,每个对象都能够构建自己的信息串;像这样:
public class Intern {
// Fields, constructors and methods omitted
public String toString() {
return this.id + ", " + this.firstname + ", " + this.lastname + ", Intern";
}
}