我正在构建一个小型 Java 应用程序来计算部门的每月费用:
- Employee:抽象父类(super class),包含 getExpenses();
- 开发者:子类,实现 getExpenses(),返回 1000
- QATester:子类,实现 getExpenses(),返回 500
- 经理:所示
- 主类:显示
目前正在开发 MainClass。我有 2 个问题/领域需要一些意见。 1)从这些行中获取这些错误。
Manager managerA = new Manager(tester1, dev1);
Manager managerB = new Manager(managerA);
该行有多个标记 - 构造函数管理器(QATester,开发人员)未定义 - 管理器无法解析为类型
2) 我是线程新手,正在考虑在线程上运行此应用程序,也许添加 UI、建议/示例?
谢谢。
package main;
import expenseApp.Developer;
import expenseApp.Manager;
import expenseApp.QATester;
public class MainClass {
public static void main(String[] args)
{
QATester tester1 = new QATester();
Developer dev1 = new Developer();
Manager managerA = new Manager(tester1, dev1);
Manager managerB = new Manager(managerA);
}
}
package expenseApp;
import java.util.ArrayList;
public class Manager extends Employee
{
private ArrayList<Manager> managerList;
private ArrayList<Employee> employeeList;
public void add(Employee employee)
{
if(employee instanceof Manager)
{
managerList.add((Manager) employee);
}
else
{
employeeList.add(employee);
}
}
@Override
public int getExpenses()
{
return 300;
}
public int getTotalExpenses()
{
int totalExpenses = 0;
for(Manager manager : managerList)
{
totalExpenses += manager.getTotalExpenses();
}
for(Employee employee : employeeList)
{
totalExpenses += employee.getExpenses();
}
return totalExpenses;
}
最佳答案
问题 1:由于某种原因,您的调用代码无法找到 Manager
类。虽然这很奇怪,因为错误发生在构造函数行而不是 import
行(通常是这种情况),但我建议先修复构造函数(请参阅我的下一节),然后再研究 cannot be returned to a type
错误,因为它可能是后续错误。
此外,您的 Manager
类没有定义任何构造函数,它隐式定义了默认(空)构造函数:
public Manager() {
}
您需要提供所需的所有构造函数。从你的代码我猜你想要这样的东西:
public Manager(List<Manager> managers, List<Employee> employees) {
this.managers = new ArrayList<>(managers);
this.employees = new ArrayList<>(employees);
}
问题 2:“在线程上运行”- 您的应用程序已经在线程(main
线程)上运行。您想要做什么让您认为需要线程?虽然添加 UI 可能是有效的响应,但您也可以在没有显式线程的情况下构建 UI。我的建议是尽可能保持简单,从我看来,您现在不需要多线程,而且我不会介绍大量 synchronization issues除非有必要。
关于java - 错误和线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28655029/