While adding elements to Array, type is bounded i.e.; it allows to store element of any specific data-type or specific class

Trying to add another data-type, other than declared data-type results in throwing ArrayStoreException at runtime

Using Generics while declaring ArrayList
makes it is type-bounded i.e.; if ArrayList
is declared to accept only String or any specific
class then adding any other type results in
throwing compile-time error

add() & get() operations nearly providesame performance as that of ArrayBut with modify operation like deletion
will yield poor performance because
it involves lot of shiftingWith capacity reaching maximum
will result in again poor performance
as it involves copying data from old arrayinto new array