2

私は GWT を使用しており、EverlinkedActions クラスのメソッド cmd_addspace を呼び出すネイティブ メソッドを作成しました。これは今のところ問題なく動作します。

private static native String execute(String functionName,  Object[] vParams)/*-{
  try{          
      @es.gwt.client.dash.actions.impl.EverlinkedActions::cmd_addspace([Ljava/lanG/Object;)(vParams);          
  }catch(e){
      alert(e.message);
  }

}-*/;

メソッド名を動的にするにはどうすればよいですか? これは、「cmd_addspace」の代わりに、その名前がネイティブメソッドの引数として渡されるメソッド「functionName」を呼び出したいことを意味します。

クラス名も動的にする方法はありますか?私はそのようなものが欲しい:

private static native String execute(String className, String functionName,  Object[] vParams)/*-{
  try{          
      @es.gwt.client.dash.actions.impl.className::functionName([Ljava/lanG/Object;)(vParams);          
  }catch(e){
      alert(e.message);
  }

}-*/;

助けてくれてありがとう

4

1 に答える 1

4

ここで実際に何を達成しようとしているのかはわかりませんが、残念ながら JSNI はそのようには機能しません。

のようなコード@es.gwt.client.dash.actions.impl.EverlinkedActions::cmd_addspace([Ljava/lanG/Object;)(vParams);は、コンパイル時に完全に解決可能なシンボルである必要があります。これは、クラスとメソッドの名前が最小化されたバージョンに置き換えられるためです。

于 2013-05-09T16:27:26.503 に答える