如何访问类的私有构造函数?
2022-08-31 12:06:02
我是一名Java开发人员。在一次采访中,我被问到一个关于私有构造函数的问题:
是否可以访问类的私有构造函数并对其进行实例化?
我回答“不”,但错了。
你能解释一下为什么我错了,并举一个用私有构造函数实例化对象的例子吗?
我是一名Java开发人员。在一次采访中,我被问到一个关于私有构造函数的问题:
是否可以访问类的私有构造函数并对其进行实例化?
我回答“不”,但错了。
你能解释一下为什么我错了,并举一个用私有构造函数实例化对象的例子吗?
绕过限制的一种方法是使用反射:
import java.lang.reflect.Constructor;
public class Example {
public static void main(final String[] args) throws Exception {
Constructor<Foo> constructor = Foo.class.getDeclaredConstructor();
constructor.setAccessible(true);
Foo foo = constructor.newInstance();
System.out.println(foo);
}
}
class Foo {
private Foo() {
// private!
}
@Override
public String toString() {
return "I'm a Foo and I'm alright!";
}
}
目前还不清楚这些是否适用 - 你能提供更多信息吗?