为什么applet不需要main()?

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

为什么他们不需要main() ? 如果我想创建一个从init()或类似的东西开始的Craplet类,那么设计是不好的,或者我将如何去做呢?

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

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

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

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

超类在这些中没有任何虚拟代码:

 public void init() {} 

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

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

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

applet的执行环境(通常是你的web浏览器)根据渲染到达的阶段在不同的点调用applet方法。 这提供了一个比简单的main()方法更适合Web的抽象级别。 此外,使用main()方法启动任意Java程序通常会被视为存在安全风险。

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