Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать класс объекта? 
V
    Опции темы
Ortega
Дата 18.8.2008, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 5.11.2005
Где: Харьков, Украина

Репутация: 4
Всего: 6



Так нужно именно имя класса?  smile 
--------------------
Всему свое время (с) ЧайфНе парься, будь счастлив (с) Пеппи Длинный Чулок
PM MAIL WWW ICQ Skype GTalk   Вверх
ElKa
Дата 18.8.2008, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 300
Регистрация: 1.2.2006

Репутация: 2
Всего: 4



все равно не получается
мне не стринг нужен, а класс
а стринг я не могу задать как имя класса

Код

String eclass = ((ClassNameInterface)prE).getClassName();
((eclass)prE).defOutVar();


defOutVar() в интерфейсе нет.. как мне его вызвать? 
PM   Вверх
Ortega
Дата 18.8.2008, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 5.11.2005
Где: Харьков, Украина

Репутация: 4
Всего: 6



ElKa, ОСТАНОВИСЬ! И сформулируй, пожалуйста, задачу.
--------------------
Всему свое время (с) ЧайфНе парься, будь счастлив (с) Пеппи Длинный Чулок
PM MAIL WWW ICQ Skype GTalk   Вверх
ElKa
Дата 18.8.2008, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 300
Регистрация: 1.2.2006

Репутация: 2
Всего: 4



 
Ortega, 

ну я же сформулировала.. у меня объекты разных классов обрабатываются по очереди..
для каждого из них вызывается метод.. надо узнать их классы чтобы его вызывать..
я сделала интерфейс и в каждом классе добавила метод который возвращает имя класса как стринг..
но использовать этот стринг в других случаях я не могу.. 
если мне например надо для некоторых объектов вызвать другой метод которого нет у других..
получается опять та же проблема: как узнать класс? 
PM   Вверх
AxNe0
Дата 18.8.2008, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 24.4.2006
Где: St. Petersburg

Репутация: 4
Всего: 5



ElKa, создай хорошую объектно-ориентированную модель. Если не знаешь как или не можешь, опиши поподробнее структуру, какие есть классы, для чего они нужны и пр.


--------------------
SCJP 6, SCBCD 5, OCEWSD 6
blog
PM ICQ Skype   Вверх
ElKa
Дата 18.8.2008, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 300
Регистрация: 1.2.2006

Репутация: 2
Всего: 4



AxNe0, 

у меня есть разные классы объектов.. для каждого из них  есть метод для печати.. 
для этого я сделала интерфейс и там этот метод задекларировала..
а потом в каждом классе заимплементировала..
это работает..


но еще например некоторые объекты могут быть двух видов..
например Предикат  это или if-выражение или определение переменной  x=...
и в этих двух классах есть метод которого нет в других..
и в этом общем объекте Предикат мне надо его вызвать..
как мне получить класс для этого..
мне что же теперь для каждого случая интерфейс создавать?
PM   Вверх
Ortega
Дата 18.8.2008, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 5.11.2005
Где: Харьков, Украина

Репутация: 4
Всего: 6



ElKa, без обид, пожалуйста, но мне кажется, что имеет место быть попытка удаления гланд через известное место. 
Я в том смысле, что возможно, тут можно оюойтись без извращений и все намного проще?
Давай ты расскажешь нам, чего именно ты пытаешься добиться этими манипуляциями.

Добавлено через 1 минуту и 55 секунд
Цитата(ElKa @ 18.8.2008,  15:54)
AxNe0, 

у меня есть разные классы объектов.. для каждого из них  есть метод для печати.. 
для этого я сделала интерфейс и там этот метод задекларировала..
а потом в каждом классе заимплементировала..
это работает..


но еще например некоторые объекты могут быть двух видов..
например Предикат  это или if-выражение или определение переменной  x=...
и в этих двух классах есть метод которого нет в других..
и в этом общем объекте Предикат мне надо его вызвать..
как мне получить класс для этого..
мне что же теперь для каждого случая интерфейс создавать?

А еще есть наследование....
Когда у классов, имеющих что-то общее, есть общий класс-предок.
Elka, почитай основы ООП.
--------------------
Всему свое время (с) ЧайфНе парься, будь счастлив (с) Пеппи Длинный Чулок
PM MAIL WWW ICQ Skype GTalk   Вверх
ElKa
Дата 18.8.2008, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 300
Регистрация: 1.2.2006

Репутация: 2
Всего: 4



Ortega, 

у всех этих классов есть предок это узел синтаксического дерева.. они его наследуют..
так что еще одно наследование исключается..

но неужели нет никакой относительно простой возможности узнать класс объекта???
PM   Вверх
alexadr
Дата 18.8.2008, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 25.9.2006

Репутация: 4
Всего: 4



Цитата(ElKa @  18.8.2008,  16:02 Найти цитируемый пост)
но неужели нет никакой относительно простой возможности узнать класс объекта??? 

objectOfAnyClass.getClass().getName()
PM MAIL   Вверх
Ortega
Дата 18.8.2008, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 5.11.2005
Где: Харьков, Украина

Репутация: 4
Всего: 6



Полиморфизм, полиморфизм и еще раз полиморфизм smile 
Вот примерно такая будет иерархия. 
user posted image
Код

((SyntaxTreeNode)obj).getOffString()


Код

((Predicate)obj).defOutVar()

--------------------
Всему свое время (с) ЧайфНе парься, будь счастлив (с) Пеппи Длинный Чулок
PM MAIL WWW ICQ Skype GTalk   Вверх
AxNe0
Дата 18.8.2008, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 24.4.2006
Где: St. Petersburg

Репутация: 4
Всего: 5



ElKa, ты не с той стороны пытаешься решить задачу. Хорошая, с точки зрения ООП, структура классов и интерфейсов может существенно облегчить жизнь. Раз мы выяснили-таки, что у классов есть что-то общее, что мешает создать нечто подобное:
Код
// узел синтаксического дерева
class Node { }
// предикат
class Predicate extends Node {
    void methodPredicate() { /* do smth*/ }
}
// if-предикат
class PredicateIf extends Predicate { }
// x=
class PredicateAssignment extends Predicate { }

а туда, где тебе надо вызывать methodPredicate(), передавай массив Predicate[] predicates. И все будет удобно, красиво и поддерживаемо.

Добавлено @ 16:26
Ortega, +1 smile в чем рисовал? 

Это сообщение отредактировал(а) AxNe0 - 18.8.2008, 16:27


--------------------
SCJP 6, SCBCD 5, OCEWSD 6
blog
PM ICQ Skype   Вверх
ElKa
Дата 18.8.2008, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 300
Регистрация: 1.2.2006

Репутация: 2
Всего: 4



AxNe0, 

нет, они не extends предикат.. потому что они у него ничего не наследуют
они наследуют у узла, так же как и предикат 
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1432 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.