Access private constructors and create object in Java
1. Get
constructor list using getDeclaredConstructor() method.
2. Set
Constructor list accessible true for the list using setAccessible() method.
3. Obtain
object by calling newInstance() method constructor.newInstance().
package core.reflection;
import java.lang.reflect.Constructor;
class PrivateConstructor {
private PrivateConstructor() {
System.out.println("private constructor !!");
}
@Override
public String toString() {
return "I'm private and I'm alright!";
}
}
public class TestPrivateContructor {
public static void main(final String[] args) throws Exception {
/** SecurityException,
NoSuchMethodException */
Constructor<PrivateConstructor>
constructor =
PrivateConstructor.class.getDeclaredConstructor(new Class[0]);
//
PrivateConstructor.class.getDeclaredConstructor(new Class[0]);
constructor.setAccessible(true);
/**
* IllegalArgumentException,
InstantiationException,
* IllegalAccessException,
InvocationTargetException.
* */
PrivateConstructor
object = constructor.newInstance(new Object[0]);
// constructor.newInstance();
System.out.println(object);
}
}
Output:
private constructor !!
I'm private and I'm alright!
No comments:
Post a Comment