Почему апплетам не нужен main ()?
это относится к подклассам апплета, сервлета, мидлета и т. д.
почему им не нужен main()
? Если бы я хотел создать Craplet
класса, который начинается с init()
или что-то подобное, это плохой дизайн, или как бы я это сделал?
5 ответов
это на самом деле хороший дизайн, но не очевидно, и то, что вы хотите сделать, не будет иметь никакого эффекта, поэтому это немного интуитивно понятно.
эти типы применений живут их жизни в контейнерах и как таковой их пункты входа определены стандартами эти контейнеры должны придерживаться. Разработчики этих стандартов решили не называть точку входа главной. Вы бы разместили свою функциональность в переопределенном методе. Все апплеты имеют следующие четыре методы:
public void init();
public void start();
public void stop();
public void destroy();
у них есть эти методы, потому что их суперкласса, java.applet.Applet
, имеет следующие методы.
суперкласс не имеет ничего, кроме фиктивного кода в этих:
public void init() {}
если вы хотите получить класс для расширения или изменения имени init()
вы должны реализовать свой класс и иметь свой вызов метода init()
. Это будет использовать полиморфизм, чтобы вы могли называть метод как угодно. Если вы не пишете контейнер сервлета, вы, вероятно зря тратишь время.
апплеты и сервлеты не запускают свой собственный процесс. Вместо этого они бегут внутри контейнера. Поэтому им не нужен статический основной метод (который запускает процесс), а способ взаимодействия с их контейнером.
'main' - это просто соглашение, которое обычно поддерживают C, C++ и java, но, например, если вы пишете C или c++ непосредственно против Win32 API, вам не обязательно иметь main (), но вместо этого у вас есть WinMain.
среда выполнения апплета (как правило, ваш веб-браузер) вызывает методы апплета в разных точках в зависимости от того, на каком этапе рендеринга он достигнут. Это обеспечивает уровень абстракции, который лучше подходит для интернета, чем простой main()
метод. Кроме того, запуск произвольных программ Java с помощью main()
методы обычно считаются чем-то вроде угрозы безопасности.
апплет не использует main (), потому что при загрузке апплета он автоматически вызывает определенные методы класса апплета для запуска и выполняет код апплета. и у апплета свой жизненный цикл.