Почему апплетам не нужен 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 (), потому что при загрузке апплета он автоматически вызывает определенные методы класса апплета для запуска и выполняет код апплета. и у апплета свой жизненный цикл.