/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.reflect.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public abstract static class ArrayListGeneric1<T> {
private int capacity = 1;
private int size = 0;
T
[] array
= (T
[]) Array.
newInstance(getElementType
(), capacity
);
public ArrayListGeneric1() {}
Class<?> getElementType() {
ParameterizedType pt = (ParameterizedType) getClass().getGenericSuperclass();
Type[] typeArgs = pt.getActualTypeArguments();
// Will fail if it's not a class type.
return (Class<?>) typeArgs[0];
}
}
{
System.
out.
println(new ArrayListGeneric1
<String[]>() {}.
array.
getClass()); System.
out.
println(new ArrayListGeneric1
<Integer
>() {}.
array.
getClass()); }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuKjsKaW1wb3J0IGphdmEuaW8uKjsKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewogIHB1YmxpYyBhYnN0cmFjdCBzdGF0aWMgY2xhc3MgQXJyYXlMaXN0R2VuZXJpYzE8VD4gewogICAgcHJpdmF0ZSBpbnQgY2FwYWNpdHkgPSAxOwogICAgcHJpdmF0ZSBpbnQgc2l6ZSA9IDA7CiAgICBUW10gYXJyYXkgPSAoVFtdKSBBcnJheS5uZXdJbnN0YW5jZShnZXRFbGVtZW50VHlwZSgpLCBjYXBhY2l0eSk7CgogICAgcHVibGljIEFycmF5TGlzdEdlbmVyaWMxKCkge30gICAKCiAgICBDbGFzczw/PiBnZXRFbGVtZW50VHlwZSgpIHsKICAgICAgUGFyYW1ldGVyaXplZFR5cGUgcHQgPSAoUGFyYW1ldGVyaXplZFR5cGUpIGdldENsYXNzKCkuZ2V0R2VuZXJpY1N1cGVyY2xhc3MoKTsKICAgICAgVHlwZVtdIHR5cGVBcmdzID0gcHQuZ2V0QWN0dWFsVHlwZUFyZ3VtZW50cygpOwoKICAgICAgLy8gV2lsbCBmYWlsIGlmIGl0J3Mgbm90IGEgY2xhc3MgdHlwZS4KICAgICAgcmV0dXJuIChDbGFzczw/PikgdHlwZUFyZ3NbMF07CiAgICB9Cn0KCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQlTeXN0ZW0ub3V0LnByaW50bG4obmV3IEFycmF5TGlzdEdlbmVyaWMxPFN0cmluZ1tdPigpIHt9LmFycmF5LmdldENsYXNzKCkpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihuZXcgQXJyYXlMaXN0R2VuZXJpYzE8SW50ZWdlcj4oKSB7fS5hcnJheS5nZXRDbGFzcygpKTsKCX0KCn0=