是否可以在构造类的单个实例之前调用静态方法?
答案 0 :(得分:11)
绝对,这是静态方法的目的:
class ClassName {
public static void staticMethod() {
}
}
要调用静态方法,必须导入类:
import ClassName;
// ...
ClassName.staticMethod();
或使用静态导入(Java 5或更高版本):
import static ClassName.staticMethod;
// ...
staticMethod();
答案 1 :(得分:2)
是的,这正是静态方法的用途。
ClassName.staticMethodName();
答案 2 :(得分:2)
正如其他人已经建议的那样,绝对可以在没有(先前)创建实例的情况下在类上调用静态方法 - 这就是Singletons的工作方式。例如:
import java.util.Calendar;
public class MyClass
{
// the static method Calendar.getInstance() is used to create
// [Calendar]s--note that [Calendar]'s constructor is private
private Calendar now = Calendar.getInstance();
}
如果您的意思是“是否可以在初始化第一个对象之前自动调用特定的静态方法?”,请参阅下文:
public class MyClass
{
// the static block is garanteed to be executed before the
// first [MyClass] object is created.
static {
MyClass.init();
}
private static void init() {
// do something ...
}
}
答案 3 :(得分:1)
是的,因为静态方法无法访问实例变量,所以JVM所要做的就是运行代码。
答案 4 :(得分:1)
在不实例化类的情况下调用静态方法意味着。
答案 5 :(得分:0)
是的,您可以在创建任何实例之前写ClassName.methodName
来访问它。
答案 6 :(得分:0)
你不仅可以这样做,而且你应该这样做。
答案 7 :(得分:0)
事实上,有许多“实用工具类”,例如Math
,Collections
,Arrays
和System
,它们是无法实例化的类,但其全部目的是为人们提供静态方法。
答案 8 :(得分:0)
是的,这绝对有可能。例如,请考虑以下示例......
class test {
public static void main(String arg[]) {
System.out.println("hello");
}
}
...如果我们运行它,它确实执行,我们从未创建过类测试的实例。简而言之,语句public static void main(String arg[])
意味着在不实例化类test
的情况下执行main方法。