Может ли одно сказать меня почему я не могу вернуть «vel»
Уверенный - вы не дали ему значения, если ни одно из ваших условий не является истинным. Переменная не определенно назначена, поэтому вы не можете ее прочитать, чтобы вернуть ее. Что вы делаете хотите, чтобы вернуться в этом случае? Действительно ли это действительно? Возможно, вы должны сделать исключение в этом случае.
Лично я бы действительно вернулся с каждого из блоков if
- я не думаю, что локальная переменная добавляет какую-либо выгоду. В этот момент, было бы более очевидным, что было неправильно:
public Velocity add(final Velocity velocity) {
if (...) {
...
return ...;
}
if (...) {
...
return ...;
}
// What should we do if we get here?
}
Теперь, когда оба ваших условий, сделать определения возвращаемого значения просто вернуть его немедленно, это более очевидно (ИМО), что если вы получите внизу, потому что ни одно из условий не оценивалось как true
... поэтому либо вы хотите вернуть некоторое «пустое» значение, либо нулевую ссылку, либо выбросить исключение.
Конечно, предполагается, что вы не хотите, чтобы второе условие эффективно превзошло первое, что оно делает в данный момент - если оба условия истинны, значение, установленное в первом блоке, по-видимому, не имеет значения, поскольку оно будет перезаписан вторым блоком.
Непонятно, что такое CartesianCoordinate
, но это странно названо для метода Java - и если он возвращает Class<?>
, это определенно странно. Что такое p
? Я не знаю, отличается ли ваш реальный код от этого, но даже если не считать, что это не скомпилируется, оно мне неприятно.
Если я положил «return v» внутри оператора IF, я получаю ошибку, что мой метод не имеет возврата ... Вот почему была создана локальная переменная ... – Gudron
@RuslanZarinaSeidovi: Ну, не то, что у него есть * no * return - вы получите сообщение об ошибке, указывающее, что оператор return * отсутствует *, потому что вы можете добраться до конца метода, не возвращая ничего. Что вы хотите, если вы доберетесь до этого? Вы * либо * должны что-то вернуть, * или * выбросить исключение. –