यह this question about java private constructors पर एक फॉलोअप है।जावा: टाइप पैरामीटर के साथ निजी कन्स्ट्रक्टर तक पहुंच
मान लीजिए मैं निम्नलिखित वर्ग है:
class Foo<T>
{
private T arg;
private Foo(T t) {
// private!
this.arg = t;
}
@Override
public String toString() {
return "My argument is: " + arg;
}
}
मैं एक new Foo("hello")
प्रतिबिंब का उपयोग कैसे बनाएगी?
उत्तर
पर jtahlborn's answer आधार पर निम्न काम करता है:
public class Example {
public static void main(final String[] args) throws Exception {
Constructor<Foo> constructor;
constructor = Foo.class.getDeclaredConstructor(Object.class);
constructor.setAccessible(true);
Foo<String> foo = constructor.newInstance("arg1");
System.out.println(foo);
}
}
यह काम नहीं करता है :( java.lang.NoSuchMethodException:। My.package.path.Foo (java.lang.Object) \t java.lang.Class.getConstructor0 (Class.java:2892) पर \t java.lang.Class.getDeclaredConstructor पर (Class.java:2058) \t ProductCatalogAgentTest.testConnect पर (ProductCatalogAgentTest.java:461) \t sun.reflect.NativeMethodAccessorImpl.invoke0 (मूल निवासी विधि) –