为什么在Java中调用的第一个方法必须是静态的,但在android中它不是吗?

时间:2016-01-10 11:42:34

标签: java android

在Java中,第一个要运行的方法是 public static void main(String [] args)

在android中,第一个要运行的方法是 protected void onCreate(Bundle savedInstanceState)

我一直想知道为什么Java中的第一个方法必须是静态的但是在android中没有?有谁请帮我把这件事清楚地记在脑海里?

2 个答案:

答案 0 :(得分:1)

这是两种不同的情景。我们有一个由java虚拟机运行的通用java语言。此jvm旨在为所有应用程序调用特定入口点。因此,这必须尽可能通用。

Android运行时和许多其他像WAR,Applets,Servlets都是“更高”的api。因此,他们拥有所有特定的切入点。由于这些apis已经在具有自己的main()方法的一般jvm中运行,因此它们能够实现更复杂和特定于域的入口点。因此,在这种情况下,android运行时创建一个给定类的对象,并调用api设计的方法。

另见:

还有很多其他资源。

答案 1 :(得分:0)

因为Android studio基于框架。 如果你在打破onCreate'时查看了callstack,你可以看到一个静态的main()方法被调用&创建MainActivity类的实例。

http://picpaste.com/stack-FOnB69o6.png