2010-05-08 4 views
2

Ok, donc j'ai une classe pour une "Structure de Données Avancée" (dans ce cas un kinda tree) Donc j'ai implémé un Iterator en tant que classe privée avec dedans. L'itérateur doit donc implémenter une fonction de suppression pour supprimer le dernier élément supprimé. Maintenant mon ADT implémente déjà une fonction de suppression, et dans ce cas il y a très peu (en y réfléchissant, je ne pense rien) à gagner en implemant une fonction de suppression différente pour l'itérateur.classe privée appelant une méthode de sa classe externe

alors comment puis-je faire pour appeler le supprimer de mon ADT

croquis de mon struture: (il sera)

public class ADT { 
... 
    private class ADT_Iterator impliments java.util.Itorator{ 
     ... 
     public void remove(){ 
      //where I want to call the ADT's remove function from 
     } 
... 

    public void remove(Object paramFoo) 
    { 
    ... 
    } 

    ...  

} 

Il suffit donc d'appeler remove (FooInstance) ne fonctionnera pas et this.remove (FooInstance) est la même chose.

comment appeler? (et changer le nom de la fonction de suppression de l'ADT n'est pas une option, car cet AD T doit rencontrer un Interace que je suis en mesure de changer)

Je pourrais faire les deux appeler une fonction removeHelper, je deviner ...

Répondre

4
ADT.this.remove(object) 

(Bien que simplement appeler remove (objet) fonctionnera dans ce cas, car il a une signature différente de la méthode remove() dans le iterator.)

3

pour obtenir la référence la classe externe dont la classe interne est "attachée" utilise ClassName.this, dans votre cas:

Questions connexes