![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
iliot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 15.11.2006 Репутация: нет Всего: нет |
Приветствую!
Я работаю в JBuilder 2005/TomCat 5.5.9. Написал простенький тестовый JSP+два Been-a. Один бин абстрактный, и второй соответственно его расширяет. В JSP импортнул пакет с бинами, попытался стандартно применить полиморфизм(вроде так называется ![]() Пример: package x abstact class JBeen1{ protected a1 protected a2 } package x class JBeen2 extends JBeen1{ a1{} a2{} } И в JSP: <% <%page import "x"%>1 JBeen2 a; JBeen1 b = a; b.a1() - и вот тут он почему-то ломиться в JBeen1.a1 и выдает "jsp1.jsp": a1() has protected access in JBeen1 %> |
|||
|
||||
shimopus |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 25.8.2006 Репутация: нет Всего: 1 |
Какой-то глупый код... Вам не кажется? Выложите реальный исходник.
|
|||
|
||||
Shurr |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 24.10.2006 Репутация: 1 Всего: 7 |
Объяви методы бинов, к которым хочешь обращаться, как public.
Это сообщение отредактировал(а) Shurr - 15.11.2006, 11:56 |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 16 Всего: 151 |
Твой полиморфизм пытается сузить область действия методов a1, a2. А наследники могут ее только расширять (либо оставлять неизменной). Поэтому сделай в классе B эти методы либо public, либо protected.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
iliot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 15.11.2006 Репутация: нет Всего: нет |
Вот код, вроде все правильно пишу...:
Если объявляешь методы первого класса как public все работает, как будто два бина в разных пакетах Это сообщение отредактировал(а) iliot - 15.11.2006, 14:02 |
|||
|
||||
Sherst |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 131 Регистрация: 26.10.2005 Репутация: 2 Всего: 2 |
Для каждой jsp странички генерится соответствующий класс сервлета в пакете package org.apache.jsp;
Там может быть проблема, не уверен, но надо проверить такой момент. файл JBeen1.java:
файл JBeen2.java:
И например такой файл Test.java:
Вопрос большей частью наверное относится к ветке обшие вопросы, я создаю объект класса и вызываю его protected метод в другом пакете будет ли такой код работать. Вот в чем вопрос. А вообще методы бинов рекомендуется делать public а данные private. |
||||||
|
|||||||
Sherst |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 131 Регистрация: 26.10.2005 Репутация: 2 Всего: 2 |
Проверил, мои подозрения подтвердились.
Действительно нельзя вызвать protected метод класса если его объект создан не в том же пакете что и класс. |
|||
|
||||
iliot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 15.11.2006 Репутация: нет Всего: нет |
Sherst спасибо, сформулировал вопрос по-человечески, а то я что-то уперся в стенку и очевидного не видел:
JBeen2 d = new JBeen2(); JBeen1 a = d;//вот с этим все нормально a.a1(); // а здесь нестыковка Сразу возникает вопрос, как реализовать полиморфизм при использовании JSP, к которому подключаются бины с наследованием. Том кидает сервлеты из JSP-ок в один пакет, а бины оказываются в другом. => та же ситуация как и в примере Sherst-а??? Помогите ламеру советом. Ведь как-то это решается. |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 16 Всего: 151 |
Сделать методы публичными, как и советовал с самого начала Shurr ![]() -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
iliot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 15.11.2006 Репутация: нет Всего: нет |
Это конечно выход, но как-нибудь по-красивее нельзя?
![]() |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 16 Всего: 151 |
Конечно, можно. Используй рефлексию - и вызывай себе хоть приватные методы ![]() ![]() (шутю) -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |