Sto cercando di creare una calcolatrice per allenarmi in vista dell'esame di prog2, ho studiato da poco i tipi generici ma ho sicuramente sbagliato qualcosa. Questo è il codice dell'oggetto che mi crea problemi:

codice:
public class Espressione<E> {
    private final char tipo; //tipo del carattere "n" per numero "o" per operazione "p" per parentesi
    private final E elemento; //Sarà o frazione(Frazione) o un operazione(char)
    private final int priorita; //priorità


    public Espressione(char type, String element, int priority) {
        if(type=='n') {
            elemento = new E(Integer.parseInt(element));
        }
        else if(type == 'o') {
            elemento = element.charAt(0);
        }
        else //se non è tra i caratteri permessi solleva eccezione
            throw new IllegalArgumentException("Mi aspettavo una parentesi o un operando\nErrore di Sistema\nErrore nel creare CharEsp con il primo costruttore");
        tipo=type;
        priorita = priority;
    }


    public E getElemento() {
        return elemento;
    }


    public char getTipo() {
        return tipo;
    }


}
Quando compilo mi segnala i seguenti 2 errori, sapreste dirmi come rimediare?

C:\Users\Asus\Desktop\Documenti\Uni\MieiProgetti\E spressione.java:8: error: unexpected type
elemento = new E(Integer.parseInt(element));
^
required: class
found: type parameter E
where E is a type-variable:
E extends Object declared in class Espressione
C:\Users\Asus\Desktop\Documenti\Uni\MieiProgetti\E spressione.java:11: error: incompatible types
elemento = element.charAt(0);
^
required: E
found: char
where E is a type-variable:
E extends Object declared in class Espressione
2 errors


Procedura completata con codice di uscita 1