Question

Ceci est valable pour les sous-classes de Applet, Servlet, Midlet, etc.

Pourquoi ont-ils pas besoin d'un main()? Si je voulais créer une classe Craplet qui commence à init() ou quelque chose de similaire, est-il une mauvaise conception ou comment pourrais-je aller à le faire?

Était-ce utile?

La solution

Il est en fait un bon design, mais pas évident et ce que vous voulez faire aurait aucun effet il est donc un peu contre-intuitif.

Ces types d'applications vivent leur vie dans des conteneurs et en tant que tels leurs points d'entrée sont déterminés par les normes ces conteneurs doivent respecter. Les concepteurs de ces normes ont choisi de ne pas appeler le principal point d'entrée. Vous placez votre fonctionnalité dans une méthode surchargée. Toutes les applets ont les quatre méthodes suivantes:

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

Ils ont ces méthodes parce que leur superclasse, java.applet.Applet, a ces méthodes.

Le superclasse n'a pas autre chose que le code factice dans celles-ci:

public void init() {}

Si vous voulez dériver une classe d'étendre ou de modifier le nom de init() vous devez implémenter votre classe et votre appel de méthode init(). Cela utiliserait polymorphisme pour vous permettre d'appeler la méthode que vous voulez. À moins que vous écrivez conteneur de servlets vous perdez probablement votre temps.

Autres conseils

Applets et Servlets ne commencent pas leur propre processus. Au contraire, ils courent à l'intérieur d'un conteneur. , Ils ne concernent donc pas besoin d'une méthode statique principale (qui démarre le processus), mais une façon d'interagir avec leur conteneur.

« principale » est juste une convention que C, C ++ et Java prennent en charge couramment, mais par exemple, si vous écrivez C ou C ++ directement contre l'API Win32, vous ne devez pas avoir main (), mais vous avez WinMain.

L'environnement d'exécution d'une applet (généralement, votre navigateur Web) appelle les méthodes d'applet à différents points en fonction de quel stade de rendre plus il est atteint. Cela fournit un niveau d'abstraction qui est mieux pour le web qu'une méthode simple main(). De plus, le lancement de programmes Java arbitraires avec des méthodes de main() serait habituellement considéré comme quelque chose d'un risque de sécurité.

Applet ne pas utiliser main () parce que lorsque l'applet est chargé, il appelle automatiquement certaines méthodes de la classe d'applet pour démarrer et exécute le code de l'applet. et applet a son propre cycle de vie.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top