NullList.java
package eu.javaexperience.collection.list;
import java.lang.reflect.Array;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import eu.javaexperience.collection.iterator.EmptyIterator;
import eu.javaexperience.reflect.Mirror;
public class NullList<T> implements List<T>
{
public static final NullList instance = new NullList();
@Override
public int size()
{
return 0;
}
@Override
public boolean isEmpty()
{
return true;
}
@Override
public boolean contains(Object o)
{
return false;
}
@Override
public Iterator<T> iterator()
{
return EmptyIterator.INSTANCE;
}
@Override
public Object[] toArray()
{
return Mirror.emptyObjectArray;
}
@Override
public <T> T[] toArray(T[] a)
{
return (T[]) Array.newInstance(a.getClass().getComponentType(), 0);
}
@Override
public boolean add(T e)
{
return false;
}
@Override
public boolean remove(Object o)
{
return false;
}
@Override
public boolean containsAll(Collection<?> c)
{
return false;
}
@Override
public boolean addAll(Collection<? extends T> c)
{
return false;
}
@Override
public boolean addAll(int index, Collection<? extends T> c)
{
return false;
}
@Override
public boolean removeAll(Collection<?> c)
{
return false;
}
@Override
public boolean retainAll(Collection<?> c)
{
return false;
}
@Override
public void clear()
{
}
@Override
public T get(int index)
{
return null;
}
@Override
public T set(int index, T element)
{
return null;
}
@Override
public void add(int index, T element)
{
}
@Override
public T remove(int index)
{
return null;
}
@Override
public int indexOf(Object o)
{
return -1;
}
@Override
public int lastIndexOf(Object o)
{
return -1;
}
@Override
public ListIterator<T> listIterator()
{
return null;
}
@Override
public ListIterator<T> listIterator(int index)
{
return null;
}
@Override
public List<T> subList(int fromIndex, int toIndex)
{
return null;
}
}