为什么Java主要方法是静态的?

Alotor:

Java main()方法的方法签名为:

public static void main(String[] args){
    ...
}

此方法是否有理由是静态的?

雅各布·克拉尔(Jacob Krall):

该方法是静态的,因为否则会产生歧义:应调用哪个构造函数?特别是如果您的班级看起来像这样:

public class JavaClass{
  protected JavaClass(int x){}
  public void main(String[] args){
  }
}

JVM应该调用new JavaClass(int)吗?它应该做什么x

如果不是,JVM是否应该在JavaClass不运行任何构造方法的情况下实例化我认为不应该这样做,因为这会使整个类成为特殊情况-有时您有一个尚未初始化的实例,并且必须在每个可以调用的方法中进行检查。

对于JVM来说,在进入入口点之前必须实例化一个类的意义不胜枚举。这就是为什么main是静态的。

我不知道为什么main总是被标记public

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么BindingAdapter必须是静态方法?

为什么“数组”类的方法在Java中都是静态的?

为什么将静态方法视为方法?

Java规范为什么要使程序的主要方法仅无效?

为什么不能在Java接口中定义静态方法?

Java为什么不允许覆盖静态方法?

为什么Mockito不模拟静态方法?

为什么在此Java动态Web项目中看不到任何主要方法?

为什么在Java中使用静态助手方法不好?

为什么main方法在Java中是静态的

为什么NPE使用DatatypeConverter的静态方法?

为什么没有涵盖主要方法?

为什么从非静态方法访问静态方法不好?

为什么无法使用公共静态方法?

Java:为什么可以从类外部的静态方法访问非静态变量?

java扩展静态方法,无法编译,为什么?

为什么withLatestFrom RxJS方法不是静态的?

为什么从静态方法访问非静态方法是错误的设计

为什么Java中的静态方法不能抽象?

Java为什么静态比方法先打印文本

为什么主要方法应该是静态的

为什么说静态方法不能被继承?

为什么SetTarget是Storyboard的静态方法

为什么程序的主要方法是静态的?

什么是静态方法,为什么在 Java 的 Display 类中使用它

为什么 Java 泛型不能用于静态方法?

为什么扩展方法需要是静态的?

为什么 Object 类主要使用静态方法而 Array 类主要使用实例方法?

为什么在 Java 16 中的非静态内部类中允许静态方法?