在java main方法中,如果更改访问修饰符,我们得到了一个运行时异常。所以,我的疑问是,哪个类来自Java main方法??main()方法遵循的规则是什么?。如果不是inherted,当我调用main方法时,jvm内部完成了什么?。
答案 0 :(得分:3)
根据Java规范(第三版)http://java.sun.com/docs/books/jls/third_edition/html/execution.html#12.1.4。 方法main必须声明为public,static和void。它必须接受一个字符串数组的参数。此方法可以声明为
public static void main(String[] args)
或
public static void main(String... args)
所以:
答案 1 :(得分:0)
因此,如果更改访问修饰符,JVM将无法访问主方法。它不是遗传的。
答案 2 :(得分:0)
Public
- JVM调用main方法来运行项目范围之外的方法,因此访问说明符必须是公共的,以允许从应用程序外的任何地方进行调用或指示方法可以是由任何对象调用。
static
- 当JVM调用main方法时,没有对象被调用,因此它必须有静态方法来允许从类调用。
答案 3 :(得分:0)
将main方法的修饰符更改为private是完全合法的语法。对于NAMED main方法,JVM不需要任何类型的访问修饰符。但是它需要执行EXECUTED的类具有公共主要方法。
我不确定你的确切目的是什么,但这里有两个建议。
1)您是否尝试通过将主方法私有化来减少对“静态”调用的依赖?如果是这样,请删除main all,并让您的类实现“runnable”对象,而不是支持main方法。这样,其他类可以运行您的类而不依赖于它的main方法。
2)你是否试图将main方法转换为另一个内部使用的类的静态方法?如果是这样,您可能想重新考虑为什么要将这样的方法命名为main(更重要的是,如果您知道它的主要是私有的,那么为什么仍然尝试将此类作为java应用程序入口点运行?)...
答案 4 :(得分:0)
根据java文档,main()方法签名必须是这样的,为什么我这么说:
public static void main(String[] args){
//your stuffs
}