2

わかりましたので、「高度なデータ構造」(この場合はちょっとしたツリー) のクラスを持っているので、Iterator をプライベート クラスとして実装しました。そのため、反復子は、最後に返された要素を削除するための remove 関数を実装する必要があります。

現在、私のADTはすでにremove関数を実装しています。この場合、イテレータに別のremove関数を実装することで得られるものはほとんどありません(考えてみれば、何も考えていません)。

では、ADT から削除を呼び出すにはどうすればよいですか

私の構造のスケッチ:

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 )
    {
     ...
    }

    ...     

}

したがって、 remove(FooInstance) を呼び出すだけでは機能しません (そうなりますか?)。 this.remove(FooInstance) は同じことです。

私は何と呼びますか?(そして、AD T が自由に変更できることに注意してください)

両方ともremoveHelper関数を呼び出させることができると思います...

4

2 に答える 2

4
ADT.this.remove(object)

(ただし、remove(object) の呼び出しは、イテレータの remove() メソッドとは異なるシグネチャを持っているため、この場合は機能します。)

于 2010-05-08T04:07:18.583 に答える
3

内部クラスが「アタッチ」されている外部クラスの参照を取得するには、ClassName.this を使用します。

   private class ADT_Iterator impliments  java.util.Itorator{
      ...
      public void remove(){
          ADT.this.remove(obj)
      }
于 2010-05-08T04:08:38.067 に答える