![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Mirkes |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 7 Всего: 17 |
Возникла странная проблема.
Внутри класса, наследованного от JPanel определил еще один внутренний класс, так же потомок от JPanel. Получил предупреждение: Non-static inner class should not be declared serializable Я его и не объявлял В общем то работать не мешает, но это предупреждение постоянно висит и раздражает. Вопрос: можно ли заставить класс забыть об интерфейсе, реализованном у одного из предков? Это сообщение отредактировал(а) Mirkes - 6.8.2013, 19:34 -------------------- Mirkes |
|||
|
||||
| Stolzen |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1041 Регистрация: 17.10.2005 Репутация: 23 Всего: 48 |
Вряд ли можно рядовыми средствами.
А почему нельзя его сделать static? |
|||
|
||||
| Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
Действительно странно, сделал как описано, такого предупреждения нет:
|
|||
|
||||
| Mirkes |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 7 Всего: 17 |
Нужно иметь доступ к полям внешнего класса.
Ну у меня сходу возникла ошибка - нет такого метода main. Это потому, что он не static Если main сделать static, то сразу же вылезает следующая ошибка - нестатический вложенный класс может быть создан только в его облегающем классе. Реально работающий вариант ниже:
Компиляция проходит чисто и работает. А вот IDE кричит что Serializable class "New" dose not declare a static final serialVersionUID field of type long. Serializable class "Inner" dose not declare a static final serialVersionUID field of type long. Если объявить (см ниже)
Тогда IDE начинает кричать Non-static inner class should not be declared serializable И вот такой замкнутый круг. Все работает, но это раздражает. Кроме того, это свидетельствует о том, что что-то неправильно или не совсем правильно. Не могу понять, как разрулить ситуацию. -------------------- Mirkes |
||||||
|
|||||||
| Pawl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 649 Регистрация: 22.4.2008 Где: Витебск Репутация: 7 Всего: 28 |
-------------------- В действительности всё совсем не так, как на самом деле |
|||
|
||||
| Mirkes |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 7 Всего: 17 |
Всем спасибо.
Я понял, что потерять унаследованный интерфейс никак нельзя А по поводу сериализации внутреннего не статического класса я понял следующее: 1. Поскольку он сериализован одним из предков, то если я не укажу константу serialVersionUID, то это сделает компилятор. А моя IDE (JDeveloper) сходит с ума из-за противоречия. С одной стороны класс сериализован и надо требовать с пользователя константу. С другой стороны класс вложенный и не статический, следовательно сериализоваться будет только с внешним классом и интерфейс сериализации ему не нужен. Поскольку с сериализацией JPanel мне не справиться, придется терпеть этот балет сомнение у IDE. На форуме оракла советуют указывать константу. -------------------- Mirkes |
|||
|
||||
| Pawl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 649 Регистрация: 22.4.2008 Где: Витебск Репутация: 7 Всего: 28 |
Ну так смените IDE. В Idea 12 оба варианта Вашего кода компилятся без пыли и шума. -------------------- В действительности всё совсем не так, как на самом деле |
|||
|
||||
| Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
Mirkes, Понятно, что мой код не компилится
Суть моего предыдущего поста показать, что по описанным тобой шагам такого предупреждения нет. |
|||
|
||||
| Mirkes |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 7 Всего: 17 |
Я неправильно выразился. Не предупреждение, а постоянное напоминание IDE о некорректности текста. Как я уже понял, оба текста не соответствуют строгим канонам, но куда деваться.
Совет, конечно, хороший, но есть нюансы. Во первых IDE права. Во вторых и в JDeveloper все компилируется и работает. Просто постоянные пометки о некорректности раздражают. В третьих, JDeveloper freeware от оракла, а Idea - платная. Я сейчас работаю в Британии и не могу себе позволить пользоваться не лицензионным софтом, покупать мне Idea никто не будет, а за свои - жаба давит. Так что смена IDE не такая простая штука. Это сообщение отредактировал(а) Mirkes - 8.8.2013, 14:27 -------------------- Mirkes |
||||
|
|||||
| Stolzen |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1041 Регистрация: 17.10.2005 Репутация: 23 Всего: 48 |
Конечно я бы мог порекомендовать использовать Eclipse, но он точно так же выдаваёт ворниниг, если класс наследуется от Serializable и не определяет константу.
Для себя я проблему решил тем, что отрубил этот ворнинг и забыл про него |
|||
|
||||
| Pawl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 649 Регистрация: 22.4.2008 Где: Витебск Репутация: 7 Всего: 28 |
Нашел аннотацию для подавления этого предупреждения:
-------------------- В действительности всё совсем не так, как на самом деле |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |