为什么applet不需要main()?

时间:2009-05-31 13:27:55

标签: java applet main

这适用于Applet,Servlet,Midlet等的子类。

为什么他们不需要main()?如果我想创建一个以Craplet或类似的方式开始的init()类,那么设计是否糟糕,或者我将如何进行呢?

5 个答案:

答案 0 :(得分:17)

实际上这是一个很好的设计,但并不明显,你想做的事情没有效果,所以它有点反直觉。

这些类型的应用程序以容器为生,因此它们的入口点由容器必须遵守的标准决定。这些标准的设计者选择不将入口点称为主要。您可以将您的功能放在重写方法中。所有applet都有以下四种方法:

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

他们拥有这些方法,因为他们的超类java.applet.Applet具有这些方法。

超类除了虚拟代码外没有任何东西:

public void init() {}

如果您想派生一个类来扩展或更改init()的名称,您应该实现您的类并让您的方法调用init()。这将使用多态来让你随心所欲地调用方法。除非您正在编写servlet容器,否则您可能会浪费时间。

答案 1 :(得分:12)

Applet和Servlet不会启动自己的进程。相反,它们在容器内运行。因此,他们不需要静态主方法(启动过程),而是需要与容器交互的方法。

答案 2 :(得分:3)

'main'只是C,C ++和java通常支持的约定,但是例如,如果你直接针对Win32 API编写C或C ++,你不必拥有main(),而是你拥有WinMain函数。

答案 3 :(得分:2)

applet的执行环境(通常是您的Web浏览器)根据呈现它的阶段来调用不同点上的applet方法。与简单的main()方法相比,这提供了更适合Web的抽象级别。此外,使用main()方法启动任意Java程序通常会被视为存在安全风险。

答案 4 :(得分:0)

Applet不使用main(),因为当加载applet时,它会自动调用applet类的某些方法来启动并执行applet代码。 和applet有自己的生命周期。