import java.lang.reflect.Constructor;
import java.util.Arrays;
class Example
{
System.
out.
println("(String): " + a
); // ...
}
public Example
(int a,
String b
) { System.
out.
println("(int, String): " + a
+ ", " + b
); // ...
}
System.
out.
println("(String, String): " + a
+ ", " + b
); // ...
}
static Example create
(Object...
params) { try {
Class[] paramTypes = new Class[params.length];
for (int n = 0; n < params.length; ++n) {
Class cls = params[n].getClass();
if (cls.
equals(Integer.
class)) { // You may need this (for int and other primitives) } else {
paramTypes[n] = cls;
}
}
Constructor ctor
= Example.
class.
getConstructor(paramTypes
); return (Example)ctor.newInstance(params);
System.
out.
println(e.
getMessage()); e.
printStackTrace(System.
out); }
}
public static void main
(String[] args
) {
Example e1 = Example.create("foo");
Example e2 = Example.create(1, "foo");
Example e3 = Example.create("foo", "bar");
}
}
aW1wb3J0IGphdmEubGFuZy5yZWZsZWN0LkNvbnN0cnVjdG9yOwppbXBvcnQgamF2YS51dGlsLkFycmF5czsKCmNsYXNzIEV4YW1wbGUKewogICAgcHVibGljIEV4YW1wbGUoU3RyaW5nIGEpIHsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIihTdHJpbmcpOiAiICsgYSk7CiAgICAgICAgLy8gLi4uCiAgICB9CgogICAgcHVibGljIEV4YW1wbGUoaW50IGEsIFN0cmluZyBiKSB7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIoaW50LCBTdHJpbmcpOiAiICsgYSArICIsICIgKyBiKTsKICAgICAgICAvLyAuLi4KICAgIH0KCiAgICBwdWJsaWMgRXhhbXBsZShTdHJpbmcgYSwgU3RyaW5nIGIpIHsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIihTdHJpbmcsIFN0cmluZyk6ICIgKyBhICsgIiwgIiArIGIpOwogICAgICAgIC8vIC4uLgogICAgfQoKICAgIHN0YXRpYyBFeGFtcGxlIGNyZWF0ZShPYmplY3QuLi4gcGFyYW1zKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgQ2xhc3NbXSBwYXJhbVR5cGVzID0gbmV3IENsYXNzW3BhcmFtcy5sZW5ndGhdOwogICAgICAgICAgICBmb3IgKGludCBuID0gMDsgbiA8IHBhcmFtcy5sZW5ndGg7ICsrbikgewogICAgICAgICAgICAgICAgQ2xhc3MgY2xzID0gcGFyYW1zW25dLmdldENsYXNzKCk7CiAgICAgICAgICAgICAgICBpZiAoY2xzLmVxdWFscyhJbnRlZ2VyLmNsYXNzKSkgeyAvLyBZb3UgbWF5IG5lZWQgdGhpcyAoZm9yIGludCBhbmQgb3RoZXIgcHJpbWl0aXZlcykKICAgICAgICAgICAgICAgICAgICBwYXJhbVR5cGVzW25dID0gSW50ZWdlci5UWVBFOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBwYXJhbVR5cGVzW25dID0gY2xzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIENvbnN0cnVjdG9yIGN0b3IgPSBFeGFtcGxlLmNsYXNzLmdldENvbnN0cnVjdG9yKHBhcmFtVHlwZXMpOwogICAgICAgICAgICByZXR1cm4gKEV4YW1wbGUpY3Rvci5uZXdJbnN0YW5jZShwYXJhbXMpOwogICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihlLmdldE1lc3NhZ2UoKSk7CiAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKFN5c3RlbS5vdXQpOwogICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJwYXJhbWV0ZXJzIG5vdCBzdXBwb3J0ZWQiKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykKICAgIHsKICAgICAgICBFeGFtcGxlIGUxID0gRXhhbXBsZS5jcmVhdGUoImZvbyIpOwogICAgICAgIEV4YW1wbGUgZTIgPSBFeGFtcGxlLmNyZWF0ZSgxLCAiZm9vIik7CiAgICAgICAgRXhhbXBsZSBlMyA9IEV4YW1wbGUuY3JlYXRlKCJmb28iLCAiYmFyIik7CiAgICB9Cn0K