【发布时间】:2014-08-25 21:29:11
【问题描述】:
我们都知道,我们不能直接从 Java 的静态 main 方法中调用非静态方法。我写了两种从 main 调用非静态方法的方法(如下所示)。
我想问的是:使用code 1和code 2来克服限制有什么显着差异吗?
代码 1
public class Demo
{
public static void main(String[] args)
{
Demo demo = new Demo();
demo.printText();
}
public void printText()
{
System.out.println("Method successfully called.");
}
}
代码 2
public class Demo
{
public static void main(String[] args)
{
new Demo().printText();
}
public void printText()
{
System.out.println("Method successfully called.");
}
}
注意:在学校里,我们的教授告诉我们“在 Java 中,可以通过定义它们的类的名称来调用类的静态方法,而无需实例化先上课。”
但是在code 2 中没有实例化对象,但我能够调用非静态方法?
【问题讨论】:
-
new Demo()实例化对象,见stackoverflow.com/questions/24221662/… -
顺便说一句,为什么投反对票?
-
因为您假设您“在不实例化对象的情况下调用方法”,即使这正是您正在做的。您只是从未存储过引用,但它仍然是该类的实例化实例。因此,人们认为这是一个低质量的问题,因为该问题似乎缺乏
basic关于 Java 以及作为教程的一部分的引用和对象实例化的知识:docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html -
两者都有效,但通常情况下,如果您发现自己创建对象来调用单个方法,那么您的方法应该是静态的
-
听起来像
printText()可能需要一个static方法。如果在不实例化对象的情况下调用方法是有意义的,那么它可能应该是一个静态方法......