Почему этот код выдает ошибку "недоступный код"?
Я не могу найти способ решить эту проблему. Все, что я делаю, это объявляю целое число, и оно говорит мне, что код недоступен.
private class myStack{
Object [] myStack = new Object[50];
private void push(Object a){
int count = 50;
while(count>0){
myStack[count]=myStack[count-1];
count--;
}
myStack[0]=a;
}
private Object pop(){
return myStack[0];
int count2 = 0; //Unreachable Code
}
}
5 ответов
Однажды ты return
из метода вы возвращаетесь к методу, который вызвал метод в первую очередь. Любые операторы, которые вы помещаете после возврата, будут бессмысленными, так как это код, который вы не можете получить без серьезного нарушения счетчика программы (это может быть невозможно в Java).
Цитирую комментарий по этому вопросу Jim H..:
Вы вернулись из метода pop(). Все, что после этого недоступно.
Недоступный код приводит к ошибке компилятора в Java.
В вашей программе строка
int count2 = 0;
никогда не будет достигнут, так как это после оператора возврата.
Поместите эту строку над оператором return для работы.
Последним оператором в функции должен быть оператор возврата.
Инструменты линтинга будут отмечать это, поскольку это мешает распределению новой памяти после окончания области счетчика.
Простое объяснение на простом английском языке будет следующим:
private Object pop(){
return myStack[0];
int count2 = 0; //Unreachable Code
}
метод private Object pop(){}
ищет тип возврата Object
и вы только что дали этот тип возврата, написав return myStack[0];
.То твой метод не обязательно достигает int count2 = 0;
потому что предполагалось, что метод уже достиг своей цели.