私は 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ができることはありますか? 提案やコードは大歓迎です。ありがとうございました!