使用Java
反射,即使通過私有構造函數,也可以實例化類的對象。對於Java反射中的構造函數類的線程安全
public class MyClass
{
private MyClass(Object p1, String p2)
{
// Constructor with no modifications to static code
}
}
人能做到(在相同或其他任何類,異常處理爲了簡化忽略)
public static final Constructor myClass;
static
{
myClass = MyClass.class.getConstructor(Object.class, String.class);
myClass.setAccessible(true);
}
,然後創建的MyClass
新實例像
myClass.newInstance(new Object(), "Test");
是的以上呼籲newInstance()
線程安全,因爲myClass
是靜態的?
嗯...... Weird.One會假設newInstance()是與實際構造函數一樣線程安全的。 – PNS 2013-04-03 21:56:28
好吧,我很同意。但是,與直接調用相比,所涉及的代碼量要多得多。 – skirsch 2013-04-04 09:03:19