Il problema è molto breve et semplice:
Ho un interfaccia Albero parametrizzata rispetto ad un parametro T che estende Comparable<? super T>.
Successivamente ho implementato questa interfaccia creando una classe AlberoAstratto, e, quindi, ho esteso quest'ultima classe in MioAlbero.
Ovviamente ho la necessità di fornire all'utente utilizzatore la possibilità di costruire quest'albero, dunque ho creato un costruttore MioAlbero(String) che, tramite una stringa, si costruisce l'albero.
Per ragioni di comodità ho la necessità di memorizzarmi il nodo padre, dunque scrivo la seguente riga di codice:
Ma il compilatore si arrabbia dicendomi che il parametro T non può essere dereferenziato in modo statico visto che tale classe si riferisce ad un contesto non statico.codice:private static Albero<T> padre;
Che debbo fare?![]()
Eccovi tutto il codice scritto fino ad ora:
(Non fate caso alle imperfezioni che ci sono qua e là, al di fuori della definizione di padrecodice:package mio; public class MioAlbero<T extends Comparable<? super T>> extends AlberoAstratto<T> { private T info; private static Albero<T> padre; //public static <T> Albero<T> boh() { } private Albero<T> dx; private Albero<T> sx; private class Navigable { public Navigator Navigator() { return new Navigator(); } private class Navigator { private Albero<T> curr; public Navigator() { curr = padre; } } } public MioAlbero(String s) { } private MioAlbero(T t) { info = t; } public T getInfo() { return info; } public void setInfo(T t) { info = t; } @Override public Albero<T> SottoAlberoDx() { return dx; } @Override public Albero<T> SottoAlberoSx() { return sx; } @Override public boolean EVuoto() { return ((info == null) && (dx == null) && (sx == null)); } @Override public void Inserisci(T cosa) { Inserisci(cosa, null); } @Override public void Inserisci(T cosa, Albero<T> dove) { if (cosa == null) throw new IllegalArgumentException("Si sta tentando di passare null!"); Albero<T> nuovo = new MioAlbero<T>(cosa); } @Override public T Modifica(Albero<T> chi, T cosa) { // TODO Auto-generated method stub return null; } @Override public T Modifica(T chi, T cosa) { // TODO Auto-generated method stub return null; } @Override public T Rimuovi(Albero<T> cosa) { // TODO Auto-generated method stub return null; } @Override public T[] Rimuovi(T cosa) { // TODO Auto-generated method stub return null; } })

)
Rispondi quotando
