1
A
回答
2
只需提取要避免进入称为init,另一种方法intialization逻辑。你无法避免只调用一个构造函数。
2
无论您使用何种模式或策略,在某些时候,如果您想创建对象,您将需要调用构造函数。
0
事实上,在某些情况下,它可能会使用JVM实现中的类(它们不属于JRE API并且是实现特定的)。
一个例子这里http://www.javaspecialists.eu/archive/Issue175.html
它也应该可以使用sun.misc.Unsafe.allocateInstance()(Java7)
而且,使用clone()时的构造显然是绕过 - 方法创建一个对象的副本(并且该类不覆盖克隆以实现与Object.clone()方法不同的方法)。
所有这些可能性都附带了字符串,应该小心使用,如果有的话。
0
你可以模拟一个类的构造函数。他们仍然会被调用,但不会被执行。例如,下面的JUnit + JMockit测试可以做到这一点:
static class CodeUnderTest
{
private final SomeDependency someDep = new SomeDependency(123, "abc");
int doSomething(String s)
{
someDep.doSomethingElse(s);
return someDep.getValue();
}
}
static final class SomeDependency
{
SomeDependency(int i, String s) { throw new RuntimeException("won't run"); }
int getValue() { return -1; }
}
@Test
public void mockEntireClassIncludingItsConstructors()
{
new NonStrictExpectations() {
@Mocked SomeDependency mockDep;
{ mockDep.getValue(); result = 123; }
};
int result = new CodeUnderTest().doSomething("testing");
assertEquals(123, result);
}
相关问题
- 1. 如何在创建对象数组时避免默认的构造函数?
- 2. 何时调用构造函数创建对象
- 3. 为什么在创建对象时调用构造函数?
- 4. Digester 3在创建对象时调用构造函数两次
- 5. 如何避免在C++中调用祖父构造函数?
- 6. 如何避免构造函数的调用?
- 7. C++对象创建和构造函数
- 8. 如何使用在子构造函数中创建的对象构造父类
- 9. LuaJ如何在调用对象上运行函数(LuaJ正在创建新对象如何避免它)
- 10. C#创建对象比构造函数调用慢得多
- 11. 如何在不调用构造函数的情况下创建对象?
- 12. 在堆(Java)上创建对象之后调用对象的构造函数吗?
- 13. 如何在模块中创建JavaScript对象构造函数?
- 14. C++避免构造一个对象
- 15. 每次在java中调用构造函数时是否创建对象?
- 16. 重载构造函数时如何避免NullReferenceException?
- 17. 如何避免转换函数中的复制构造函数?
- 18. 手动对象构造函数调用
- 19. 在对象中创建键时,我们如何避免?
- 20. 避免默认的构造函数
- 21. 避免向量拷贝构造函数
- 22. 如何重用对象构造函数?
- 23. 如何为ndb Query构造函数创建datastore_query.Order对象?
- 24. 使用SQL Alchemy避免创建对象
- 25. 在原型构造函数中创建对象引用
- 26. 如何在JavaScript中的对象上调用构造函数?
- 27. 如何在构造函数调用方法中创建变量?
- 28. 当在js模块中定义对象构造函数时,从C调用JS对象构造函数
- 29. 如何避免使用插入迭代器调用复制构造函数
- 30. 如何在其他构造函数中调用构造函数?
您能给出更多的背景吗?你为什么想这样做? – assylias 2013-02-13 11:37:39
简单的回答:不,这是不可能的。 – jlordo 2013-02-13 11:40:15
你想阻止你的类的用户执行'new MyClass()'和/或'new MyClass(args ...)'吗?你是这个意思吗 ? – A4L 2013-02-13 11:41:24