RE:Instanciar objetos ArrayList
Lo que pasa es que List es una interface y ArrayList es una clase que implementa List por lo tanto se puede deducir que para crear un objeto List toca obligado implementar codigo en todos sus metodos de interface, este codigo lo hace ArrayList:
Tu puede personalizar tu objeto List directamente creando tu propio codigo, seria poner tu codigo en el interior de cada uno de los siguientes metodos:
List list= new List() {
public int size()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean isEmpty()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean contains(Object o)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public Iterator iterator()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public Object[] toArray()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public Object[] toArray(Object[] a)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean add(Object o)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean remove(Object o)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean containsAll(Collection c)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean addAll(Collection c)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean addAll(int index, Collection c)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean removeAll(Collection c)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean retainAll(Collection c)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public void clear()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public Object get(int index)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public Object set(int index, Object element)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public void add(int index, Object element)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public Object remove(int index)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public int indexOf(Object o)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public int lastIndexOf(Object o)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public ListIterator listIterator()
{
throw new UnsupportedOperationException("Not supported yet.");
}
public ListIterator listIterator(int index)
{
throw new UnsupportedOperationException("Not supported yet.");
}
public List subList(int fromIndex, int toIndex)
{
throw new UnsupportedOperationException("Not supported yet.");
}
}
Ahora un ArrayList es esto mismo, pero para no hacer todo esto, se creo una clase aparte llamada arrayList.
Lo mismo sucede con los eventos.