我正在构建一个小型Java应用程序来计算部门的每月费用:
目前正在使用MainClass。我有2个问题/区域我想要一些输入。 1)从这些行中获取这些错误。
Manager managerA = new Manager(tester1, dev1);
Manager managerB = new Manager(managerA);
此行有多个标记 - 构造函数Manager(QATester,Developer)未定义 - 管理员无法解析为类型
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;
}
答案 0 :(得分:1)
问题1 :由于某种原因,您的主叫代码无法找到Manager
课程。虽然它很奇怪,因为错误发生在构造函数行而不是import
行(通常是这种情况),我建议先修改构造函数(请参阅下一节)进入cannot be resolved into a type
错误,因为它可能是后续错误。
此外,您的Manager
类没有定义任何构造函数,它隐式定义了默认(空)构造函数:
public Manager() {
}
您需要提供所需的所有构造函数。从您的代码我猜你想要这样的东西:
public Manager(List<Manager> managers, List<Employee> employees) {
this.managers = new ArrayList<>(managers);
this.employees = new ArrayList<>(employees);
}
问题2 :&#34;在线程上运行&#34; - 您的应用程序已在线程main
线程上运行。你想做什么让你认为你需要线程?虽然添加UI可能是一个有效的响应,但是有可能在没有显式线程的情况下构建UI。我的建议是尽可能简单地保持它,从我看到的,你现在不需要多线程,而且我不会引入很多{{3除非有必要。