Pregunta

Esto se aplica a las subclases de Applet, Servlet, Midlet, etc.

¿Por qué ellos no necesitan una main()? Si quería crear una clase Craplet que comienza en init() o algo similar, que es un mal diseño, o cómo hago para hacerlo?

¿Fue útil?

Solución

En realidad, es un buen diseño, pero no es obvio y lo que quiere hacer no tendría ningún efecto por lo que es un poco contrario a la intuición.

Este tipo de aplicaciones viven sus vidas en recipientes y, como tal, sus puntos de entrada son determinados por las normas de los contenedores deben cumplir. Los diseñadores de estas normas optaron por no llamar a la principal punto de entrada. Se podría colocar su funcionalidad en un método reemplazado. Todos los applets tienen las siguientes cuatro métodos:

public void init();
public void start();
public void stop();
public void destroy();

Ellos tienen estos métodos debido a que su superclase, java.applet.Applet, tiene estos métodos.

La superclase no tiene nada de código ficticio en los siguientes:

public void init() {}

Si desea derivar una clase de ampliar o cambiar el nombre de init() se debe implementar la clase y tener su init() llamada al método. Esto sería utilizar el polimorfismo para que se llama al método lo que quiera. A menos que usted está escribiendo contenedor de servlets es probable que esté perdiendo el tiempo.

Otros consejos

Los applets y servlets no empiezan su propio proceso. En su lugar, se ejecutan dentro de un contenedor. Por lo tanto, lo hacen sin necesidad de un método estático principal (que inicia el proceso), pero una forma de interactuar con su recipiente.

'principal' es simplemente una convención que en C, C ++ y Java comúnmente apoyan, pero por ejemplo, si se escribe C o C ++ directamente en contra de la API de Win32, no tiene que tener main (), pero en cambio tiene WinMain.

El entorno de ejecución de un applet (por lo general, su navegador web) llama a los métodos del applet en diferentes puntos, dependiendo de en qué etapa de hacer que el que ha alcanzado. Esto proporciona un nivel de abstracción que es más adecuado para la web que un método main() sencilla. Además, el lanzamiento de programas Java con métodos arbitrarios main() normalmente sería considerado algo así como un riesgo de seguridad.

Applet no utilizan main () porque cuando se carga subprograma se llama automáticamente a ciertos métodos de la clase applet para iniciar y ejecuta el código del applet. y subprograma tiene su propio ciclo de vida.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top