![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Rusico |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 17.5.2004 Репутация: нет Всего: нет |
Здравствуйте.
Пишу в данный момент RMI систему. Возникла проблема: как мне определить тип удалённого объекта, если обёрнут в Proxy? И самое важное - как привести его к этому типу? Если это делать как обычно, то возникает исключение ClassCastException $proxy to "anyType". Ну очень надо приведение типов. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Приведи код. Для proxy instanceof прекрасно работает.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Rusico |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 17.5.2004 Репутация: нет Всего: нет |
instanceof - работает, а вот (myType)remoteObject - нет
объекты object1 и object2 - получены с сервера RMI |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Ты хочешь сказать, что такой:
выкидывает ClassCastException? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Rusico |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 17.5.2004 Репутация: нет Всего: нет |
в данном случае instanceof я не использую,
но в собственных реализациях метода equals классов ServiceImpl и GroupImpl использую и это работает |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Т.е. ты хочешь сказать, что instanceof возвращает true, а потом идет ClassCastException? Код такого поведения выложи. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Rusico |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 17.5.2004 Репутация: нет Всего: нет |
это работает, хотя может быть, что исключение и происходит, но оно обрабатывается. а когда я получаю с сервера объект, потом из клиента вызываю метод сервера, парамметром которого является этот объект, и в этом методе привожу этот объект (а он уже Proxy-объект) к нужному типу, то возникает ошибка. вот этот метод:
|
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
1. У тебя в методе equals() нет проверки что getId() возвращает не null, а значет может быть Exception и результат false (кстати try/catch здесь совсем не нужен, он только мешает). Или у тебя id гарантированно не нулевое?
2. Как второй кусок кода связан с первым? Я там что-то никакого equals() или instanceof не увидел. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Rusico |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 17.5.2004 Репутация: нет Всего: нет |
try/catch здесь нужен, так как метод public Integer getId() throws RemoteException
null - ом быть может, проверка есть, но я её не показал Первый кусок кода - нормально работающий с удалёнными объектами. Tип MainObject, к которому я там привожу объект, общий для всех других объектов в моём приложении а второй кусок кода - не работает, хотя там тоже есть приведение типов. Классы Service и Group унаследованны от MainObject. Я его выложил, чтоб показать где у меня происходит ошибка Кстати вот ещё: домустим object1 - объект типа MainObject находящийся на сервере, а object2 - объект типа MainObject который пришёл с клиента, то при сравнении их получается интересная штука:
Ныпонятно |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Так где там делается проверка на, то что класс действительно нужного типа:
Ты же не декларировал equals() в своем интерфейсе. Можешь сделать в MainObject статический метод equals(MainObject, MainObject) и использовать его при сравнении. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Rusico |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 17.5.2004 Репутация: нет Всего: нет |
на счёт первого - я точно знаю что они этого типа
И причём ошибка-то возникает в том что не получается преобразовать Proxy к Service(Group), А на счёт второго - попробую |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Откуда ты это знаешь? Просто добавь один if и убедись -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |