说,我有一个这样的代码片段:
public static void main(String[] args) {
new Main().myFunction();
}
其中myFunction是与Main在同一个类中定义的另一个方法(可以是非静态的)。你为什么要这样做?为什么不这样做:myFunction();
答案 0 :(得分:5)
myFunction
是属于Main
类型的实例方法。您的代码所做的是首先创建一个类型为Main
的新实例(即new Main()
),然后在该实例上调用方法myFunction
。
您的代码的更详细版本将是:
Main mainObj = new Main();
mainObj.myFunction();
答案 1 :(得分:1)
很可能myFunction是实例方法而不是类(静态)方法,因此必须在类的实例上调用。由于你在静态方法中,你不能直接调用实例方法,你必须首先创建一个new Main()
所做的实例,然后你可以调用它。
答案 2 :(得分:1)
在语句中使用“new”调用Java方法意味着什么?
它创建给定类
的新实例为什么不这样做:myFunction();
最有可能myFunction()
是一个实例方法:
public void myFunction() {
....
}
要调用实例方法,您需要一个第一个实例。
使用new
关键字创建一个新对象,然后调用该对象上的myFunction
方法。
使用static
访问修饰符标记的方法是类方法,它们属于整个类,不需要实例就可以工作。
未标记为static
的方法确实需要一个实例才能工作。
这就是编译器错误:
...无法从静态上下文中调用非静态方法... 1
就是这样。
1 或类似
答案 3 :(得分:0)
嗯,“Main”是一个类,'main'是一个方法,所以它们不是同一个东西。如果你想创建一个“Main”类的新实例并调用myFunction方法,你可以像你的例子所示那样做。现在,如果“主要”是“主要”的方法......那么我不能说为什么你实际上会做这样的事情。
答案 4 :(得分:0)
new Main().myFunction();
这将创建Main
类的新实例,然后在其上调用myFunction()
方法。
答案 5 :(得分:0)
因为myFunction()是非静态的,所以你需要一个Main类的实例来调用它。
new Main()。myFunction();
可以细分为
new Main()//首先实例化,然后才实例化 .myFunction()