I'm studying generics right now, and to my understanding, we use generics so we can avoid/remove the need to cast, so why do I have to cast when adding the item and the linkedlist?

```
public class ThisIsCode<E> implements Code{

    LinkedList<E> list = new LinkedList<>();

    public final void add(E... item) {
        List<E> thingie = new LinkedList<>();

        for (E i: item) {
            thingie.add((E) item);
        }

        list.add((E)thingie); 

    }

```

I also have to cast in this method as well, and in an array?? I don't think I should be putting the item into an array, so I'm a bit confused.

```
public void addSingle(Object item) {
    add((E[]) item);

}

```