コードでICEを使用しています。そして、パラメーターとして GameObserverPrx を必要とする関数を実行したいと思います。値で GameObserver を渡したくありません。スライス インターフェイスで GameObserver* を使用してプロキシを渡します。
GameObserver を GameObserverPrx にキャストするには、どの関数を使用すればよいですか? 2 番目の質問 - なぜ ICE が私の代わりにそれを行うことができなかったのですか? 私はインターネットで答えを探していました。ObjectAdapter.checkedCast しか見つかりませんでしたが、別の目的に役立ちます。
エラーは次のとおりです。
タイプ GameProxyImpl のメソッド addObserver(String, GameObserverPrx, Current) は引数 (String, GameObserverImpl, null) には適用されません PrzeciwnikKomputerowy.java /warcaby-serwer/src/main/java/sr/warcaby/serwer 74 行目 Java 問題
これが私のコードの一部です: この行にエラーが表示されます。
partia.addObserver(token, new GameObserverImpl(this)), null);
GameObserver 実装のフラグメント:
class GameObserverImpl extends _GameObserverDisp { //extends IGameObserverPOA{
private static final long serialVersionUID = 1L;
PrzeciwnikKomputerowy p;
public GameObserverImpl(PrzeciwnikKomputerowy p) {
this.p = p;
}
api.ice のフラグメント:
interface GameObserver {
void notifyObserver( CORBAMove lastMove);
};
interface GameProxy {
void addObserver( string token, GameObserver* o) throws MyException;
bool isMyTurn( string token) throws MyException;
void doMove( string token, CORBAMove move) throws MyException;
Position getPosition( string token) throws MyException;
string showPosition( string token) throws MyException;
};
CORBAMove という名前について混乱しないでください。CORBA を使用していましたが、コードを ICE に変更しました。