Если тип возврата int
, вам придется вернуть int
или throw
исключение. Простой выход из метода без return
приведет к ошибке компилятора.
Если у вас есть условие if-else-if
, может случиться так, что ни один из блоков не будет вызван. Поэтому вы должны создать оператор else
с return
.
Кроме того, результат isComplete()
и taskToCompare.getPriority()
может измениться, если вы вызываете метод несколько раз. Компилятор не знает, предотвращает ли это ваша логика c.
Например, это тот случай, если complete
равен false
и isComplete()
также возвращает false
. Как и прежде, компилятор не знает, предотвращает ли это ваша логика c.
Я думаю, вы хотите что-то вроде:
public int compareTo(Task taskToCompare) {
if(this.complete && taskToCompare.isComplete()) {
if(this.priority == taskToCompare.getPriority()) {
return 0;
}
else if(this.priority < taskToCompare.getPriority()){
return -1;
}
else{
return 1;
}
} else if(this.complete == true && taskToCompare.isComplete() == false) {
return -1;
} else if(this.complete == false && taskToCompare.isComplete() == true) {
return 1;
}else{
return 0;
}
}