4

私は Eclipse RCP アプリケーションを開発していますが、最近 Groovy を使い始めました。つまり、私のコードの 99% はまだ Java です。

Groovy を使用してメソッドをオーバーライドし、Java クラスに追加できることを読み、java.lang.String にメソッドを追加することでこれをテストできました。

しかし、これは Groovy クラスで文字列を使用する場合にのみ機能します。オーバーライドされたメソッドは、Java クラスでオーバーライドされているとは見なされません。

ここにいくつかのコードがあります:

/*
 * This is a Java class
 */
public class CTabItem {
   ...
   private API
   ...
   public void setControl(Control control){
       private API
   }
}

/*
 * This is also a Java class
 */
public class Control {
   ...
   private API
   ...
}

/*
 * This is also a Java class
 */
public class OtherClass {
  ...
  private API
  ...
  private void someMethodIDontKnow(){
     Control control = new Control();
     CTabItem tab = new CTabItem();
     tab.setControl(control);
  }
}

/*
 * This is a Groovy class
 */
public class MyViewPart extends org.eclipse.ui.part.ViewPart {
     ....
     public void createPartControl(Composite parent) {
          /* parent (or the parent of parent) is a Control
           which is set somewhere in a CTabItem to which
           I don't get access  */
     }        
}

コントロールからタブを取得する必要があります。しかし、MyViewPart をインスタンス化するのは私ではなく、いくつかのプライベート API であるため、アクセスできません。ここでGroovyができることはありますか? 提案やコードは大歓迎です。ありがとうございました!

4

1 に答える 1