【发布时间】:2010-05-17 19:06:12
【问题描述】:
我有类似下面的东西
TestObjectCreator{
private static Person person;
private static Company company;
static {
person = new Person()
person.setName("Joe");
company = new Company();
company.setName("Apple");
}
public Person createTestPerson(){
return person;
}
public Person createTestCompany(){
return company;
}
}
通过应用 static{} 我得到了什么?我假设这些对象是单例的。但是,如果我执行以下操作:
Person person = TestObjectCreator.createTestPerson();
person.setName("Jill");
Person person2 = TestObjectCreator.createTestPerson();
person2 会被命名为 Jill 还是 Joe?
【问题讨论】:
-
我相信“Person person = TestObjectCreator.createTestPerson();”将导致编译器错误,因为该方法未声明为静态并且您没有 TestObjectCreator 的实例。
-
不正确。静态块在静态方法之前执行
-
不,编译器错误。 createTestPerson() 是一个实例方法。
标签: java testing static singleton