Como criar um método get com nós fora de um tipo genérico em java

Estou implementando uma estrutura de dados cíclica DoublyLinkedList. Como uma lista vinculada individualmente, os nós em uma lista duplamente vinculada têm uma referência ao próximo nó, mas, diferentemente de uma lista vinculada única, os nós em uma lista duplamente vinculada também têm uma referência ao nó anterior.

Adicionalmente, como a lista é "cíclica", a referência "next" no último nó da lista aponta para o primeiro nó da lista e a referência "anterior" no primeiro nó da lista aponta para o último nó na lista

Preciso de ajuda para iniciar meu método get, tenho procurado e não encontrei nada que pudesse me ajudar, pois estou trabalhando com um tipo genérico. Eu preciso retornar E e todos os outros exemplos me mostram isso com int como exemplo. Aqui está o meu código:

public class DoublyLinkedList<E>
{
private Node first;
private int size;

@SuppressWarnings("unchecked")
public void add(E value)
{
    if (first == null)
    {
        first = new Node(value, null, null);
        first.next = first;
        first.prev = first;
    }
    else
        {
        first.prev.next = new Node(value, first, first.prev);
        first.prev = first.prev.next;
    }
    size++;
}
private class Node<E>
{
    private E data;
    private Node next;
    private Node prev;

    public Node(E data, Node next, Node prev)
    {
        this.data = data;
        this.next = next;
        this.prev = prev;
    }
}
@SuppressWarnings("unchecked")
public void add(int index, E value)
{
    if (first.data == null)
    {
        throw new IndexOutOfBoundsException();
    } else if (index == 0)
    {
        first = new Node(value, first.next, first.prev);
    }
    else
        {
        Node current = first;
        for (int i = 0; i < index - 1; i++)
        {
            current = current.next;
        }
        current.next = new Node(value, current.next, current.prev);
    }
}
@SuppressWarnings("unchecked")
public void remove(int index)
{
    if (first.data == null)
    {
        throw new IndexOutOfBoundsException();
    }
    else if (index == 0)
    {
        first = first.next;
    }
    else
        {
            Node current = first.next;
            for (int i = 0; i < index - 1; i++)
        {
            current = current.next;
        }
        current.next = current.next.next;
    }
    size--;
}

Não consigo pensar em uma maneira de começar isso, mas basicamente o que esse método deve fazer é retornar o elemento no índice especificado na lista. Se o parâmetro index for inválido, uma IndexOutOfBoundsException deve ser lançad

public E get(int index)
{

}

Além disso, meu método de remoção não é preciso, mas vou descobrir isso sozinho, só preciso de ajuda com meu método ge

questionAnswers(0)

yourAnswerToTheQuestion