我在Java中有一个作业,我们的教授为我们提供了测试代码,我们必须编写必要的类和方法以使其起作用,但是我对Java并不陌生,并且遇到了一些麻烦。这是我教授的代码:
public class TestProcess {
public static void main(String[] args) {
/*
* A Process is a finite sequence of Tasks
*
*/
//part one
Process p = Process.getOrders(); // special process with 3 tasks
Task firstTaskOfProcessP = p;
List<Task> ListTasksProcessP = p;
assert p!=null;
// part two
assert p.size()==3;
Task t1 = p.get(0); // hint: 0 means first element of the List, 1 means second, 2 means third.
Task t2 = p.get(1); // hint: 0 means first element of the List, 1 means second, 2 means third.
assert t1 == firstTaskOfProcessP;
}
我困惑的部分是第一部分。我必须使用静态方法来初始化p而不是常规构造函数。这意味着getOrders必须返回Process类型的变量。同时必须将p分配给Task类型的变量以及Task列表。这是我最后想出的代码:
import java.util.*;
public class Task<T extends Task> extends ArrayList<Task>{
public String description;
public Task(){
super();
}
public Task(String description){
this.description = description;
}
public String getDescription(){
return this.description;
}
}
和
import java.util.*;
public class Process<T extends Task> extends Task<T>{
public Process(){
super();
}
public Process(String description){
this.description = description;
}
public static Process<Task> getOrders(){
ArrayList<Task> list = new Process<Task>();
Task t1 = new Task("Routine startup task");
Task t2 = new Task("Sending orders Task");
Task t3 = new Task("EndingTask");
list.add(t1);
list.add(t2);
list.add(t3);
return (Process<Task>)list;
}
public Task get(int index){
return (Task)this.get(index);
}
}
该代码进行编译,但是,当到达第二部分并执行p.get(0)时,结果表明其中没有null。为什么它为null,如何使此代码正常工作?另外,这是我第一次使用静态方法而不是构造函数,所以我不知道自己在做什么。编写方法getOrders的好方法是什么?
答案 0 :(得分:1)
所以不要嫉妒你。混乱的逻辑意味着流程是-任务具有-列表并且等于t1(...假设我可以正确读取此内容)。这是满足断言的一种同样混乱的方法。祝你好运。
interface Task { }
class Process extends ArrayList<Task> implements Task {
static Process taskList = new Process ();
public static Process getOrders () {
taskList.add(taskList);
taskList.add(new Process ());
taskList.add(new Process ());
return taskList;
}}