说,我的代码片段是这样的:在同一类作为主要定义在声明中使用“new”调用Java方法意味着什么?
public static void main(String[] args) {
new Main().myFunction();
}
哪里myFunction是另一种方法,(可以是非静态的)。你为什么要这样做?为什么不这样做:myFunction();
说,我的代码片段是这样的:在同一类作为主要定义在声明中使用“new”调用Java方法意味着什么?
public static void main(String[] args) {
new Main().myFunction();
}
哪里myFunction是另一种方法,(可以是非静态的)。你为什么要这样做?为什么不这样做:myFunction();
myFunction
是属于Main
类型的实例方法。您的代码所做的工作是首先创建一个类型为Main
(即new Main()
)的新实例,然后在该实例上调用方法myFunction
。
你的代码的更详细的版本是:
Main mainObj = new Main();
mainObj.myFunction();
那么,“主”是一个类,'main'是一个方法,所以它们不是同一个东西。如果您想创建一个“Main”类的新实例并调用myFunction方法,您将按照您的示例进行操作。现在,如果“main”是“Main”的方法...那么我不能说为什么你实际上会做这样的事情。
new Main().myFunction();
这将创建Main
类的新实例,然后调用myFunction()
方法就可以了。
最有可能myFunction是一个实例方法,而不是一个类(静态)方法,因此必须在类的实例调用。由于你在一个静态方法中,你不能直接调用实例方法,所以你必须首先创建一个实例new Main()
,然后你可以调用它。
因为myFunction()是非静态的,所以你需要一个类Main的实例来调用它。
new Main()。myFunction();
可以被分解成
新的Main()//实例化,然后再只 .myFunction()
What does it mean to call a Java method using “new” in a statement?
它创建给定类的新实例
最有可能的Why not just do: myFunction();
myFunction()
是一种实例方法:
为了调用实例方法,您需要一个实例第一个。
使用new
关键字创建一个新对象,然后调用该对象的myFunction
方法。
标记为static
访问修饰符的方法是类方法,它们属于整个类,不需要实例工作。
没有标记为static
的方法确实需要一个实例才能工作。
这就是编译器错误:
...cannot invoke a non-static method from a static context...1
是怎么一回事。
或类似的东西
'main'是'static'。如果'myFunction'不是,则不能简单地调用'myFunction()'。 – ephemient 2009-10-30 00:56:40
@ephemient:“if”是关键词。我们不知道其他代码正在做什么。 – 2009-10-30 01:57:01
@Alexander Pogrebnyak:是的,我试图说* *我*不知道为什么,因为*我*看不到剩下的代码。 – 2009-10-30 01:58:13