import java.lang.reflect.Array;
import java.lang.*;
class Ideone {
static <T> T[] getGenericArray(T... a) {
return a;
}
static <T> void genericArrayFailure(T... a) {
objectArray[0] = 1;
T t = a[0];
}
static <T> T[] getGenericArrayReflexionAPI(T a, T b, T c) {
T
[] array
= (T
[]) Array.
newInstance(a.
getClass(),
3); array[0] = a;
array[1] = b;
array[2] = c;
return array;
}
{
String[] stringArray
= getGenericArray
("1",
"2",
"3"); // class [Ljava.lang.String;
System.
out.
println(stringArray.
getClass());
stringArray = getGenericArrayReflexionAPI("1", "2", "3");
// class [Ljava.lang.String;
System.
out.
println(stringArray.
getClass());
// Exception in thread "main" java.lang.ArrayStoreException: java.lang.Integer
genericArrayFailure("1", "2", "3");
}
}
aW1wb3J0IGphdmEubGFuZy5yZWZsZWN0LkFycmF5OwppbXBvcnQgamF2YS5sYW5nLio7CgpjbGFzcyBJZGVvbmUgewogICAgc3RhdGljIDxUPiBUW10gZ2V0R2VuZXJpY0FycmF5KFQuLi4gYSkgewogICAgICAgIHJldHVybiBhOwogICAgfQoKICAgIHN0YXRpYyA8VD4gdm9pZCBnZW5lcmljQXJyYXlGYWlsdXJlKFQuLi4gYSkgewogICAgICAgIE9iamVjdFtdIG9iamVjdEFycmF5ID0gYTsKICAgICAgICBvYmplY3RBcnJheVswXSA9IDE7CiAgICAgICAgVCB0ID0gYVswXTsKICAgIH0KICAgIAogICAgc3RhdGljIDxUPiBUW10gZ2V0R2VuZXJpY0FycmF5UmVmbGV4aW9uQVBJKFQgYSwgVCBiLCBUIGMpIHsKICAgICAgICBUW10gYXJyYXkgPSAoVFtdKSBBcnJheS5uZXdJbnN0YW5jZShhLmdldENsYXNzKCksIDMpOwogICAgICAgIGFycmF5WzBdID0gYTsKICAgICAgICBhcnJheVsxXSA9IGI7CiAgICAgICAgYXJyYXlbMl0gPSBjOwogICAgICAgIHJldHVybiBhcnJheTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KICAgIHsKICAgICAgICBTdHJpbmdbXSBzdHJpbmdBcnJheSA9IGdldEdlbmVyaWNBcnJheSgiMSIsICIyIiwgIjMiKTsKICAgICAgICAvLyBjbGFzcyBbTGphdmEubGFuZy5TdHJpbmc7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHN0cmluZ0FycmF5LmdldENsYXNzKCkpOwoKICAgICAgICBzdHJpbmdBcnJheSA9IGdldEdlbmVyaWNBcnJheVJlZmxleGlvbkFQSSgiMSIsICIyIiwgIjMiKTsKICAgICAgICAvLyBjbGFzcyBbTGphdmEubGFuZy5TdHJpbmc7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHN0cmluZ0FycmF5LmdldENsYXNzKCkpOwoKCQkvLyBFeGNlcHRpb24gaW4gdGhyZWFkICJtYWluIiBqYXZhLmxhbmcuQXJyYXlTdG9yZUV4Y2VwdGlvbjogamF2YS5sYW5nLkludGVnZXIKICAgICAgICBnZW5lcmljQXJyYXlGYWlsdXJlKCIxIiwgIjIiLCAiMyIpOwogICAgfQp9