Я использую ICE в своем коде. И я хочу запустить функцию, которой нужен параметр GameObserverPrx. Я не хочу передавать GameObserver по значению, и я использую GameObserver * в интерфейсе среза для передачи прокси.
Какую функцию мне следует использовать для преобразования GameObserver в GameObserverPrx? И второй вопрос - почему ICE не смог сделать это вместо меня? Я искал ответ в интернете. Я нашел только ObjectAdapter.checkedCast, но он служит другой цели.
Вот ошибка:
Метод addObserver (String, GameObserverPrx, Current) в типе GameProxyImpl не применим для аргументов (String, GameObserverImpl, null) PrzeciwnikKomputerowy.java / warcaby-serwer / src / main / java / sr / warcaby / serwer line 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.