I have following sample code on java generics. Code:
public class SampleClass<T> {
ArrayList<T> arrayList;
SampleClass() {
arrayList = new ArrayList<T>();
}
void addElementToList(T item) {
arrayList.add(item);
}
public void printArrayList(){
for (T element: arrayList) {
System.out.println(element);
}
}
}
class MainClass{
public static void main(String[] args) {
SampleClass sampleClass = new SampleClass();
sampleClass.addElementToList("ele1");
sampleClass.addElementToList("ele2");
sampleClass.addElementToList(123);
sampleClass.printArrayList();
}
}
output:
ele1
ele2
123
So as property of ArrayList, it must contain homogeneous type of elements in it. But the above code is contradicting this. So is it possible? Means why JVM allowing it to happen?