Классы в Андроид

170
09 марта 2019, 20:40

Создал свой класс. Если запустить приложение с таким кодом, то все ломается.

public class Heroes {
    Heroes [] id = new Heroes[1];
    String name;

    public Heroes(){
        id[0] = new Heroes();
        id[0].name = "asdf";
    }
}

Но стоит поменять на другое и все работает.

public class Heroes {
    Heroes [] id = new Heroes[1];
    String name;
    public Heroes(){}

    public Heroes(int a){
        id[0] = new Heroes();
        id[0].name = "asdf";
    }
}

Ну и конечно создавать тогда не Heroes x = new Heroes();а Heroes x = new Heroes(любой число);

Вопрос: создание классов под андроид отличается от той же JavaFX и обычной консоли? Потому что я первый раз с такой проблемой столкнулся. Среда разработки одна и та же.

Answer 1

Если запустить приложение с таким кодом, то все ломается

А вам ошибка StackOverflowError ни о чем не говорит?

В первом примере при вызове конструктора без параметров внутри него вызывается он же сам, и так до бесконечности:

public Heroes(){
    id[0] = new Heroes();//вызов Heroes(), который снова вызовет себя в первой строке и.т.д.
    id[0].name = "asdf";
}

Во втором же случае у вас из констуктора с параметром вызывается конструктор без параметров, который имеет пустое тело, соответственно никакого зацикливания не происходит и всё работает

READ ALSO
Как проверить, “Radiobutton” на “checked == true ”?

Как проверить, “Radiobutton” на “checked == true ”?

Я проверил использование этих функций и не смог проверить его

191
взаимодействие через модальное окно

взаимодействие через модальное окно

Подскажите пожалуйста, есть приложение (https://testingshipnext

159
Почему не работает super

Почему не работает super

Ругается на super в наследуемом классе , в чём проблема ??

154
Почему не очищается очередь Rabbit MQ с помощью amqpAdmin.purgeQueue, если все сообщения в статусе ready?

Почему не очищается очередь Rabbit MQ с помощью amqpAdmin.purgeQueue, если все сообщения в статусе ready?

Все сообщения в статусе readyПробую очистить очередь с помощью

163