| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Использование заранее не определенного класса |
| Автор: Asal 7.1.2007, 02:00 | ||
| простите если мой вопрос покажется глупым, но Java я изучаю не долго и маловато навыков. 1. работает приложение используя org.apache.ojb 2. есть классик для работы с БД, который использует класс PersistenceBroker У этого класса есть метод broker.store(Object ...) который вставляет наш объект в базу. название базы, имя таблицы и имена полей он берет из XML. Для каждого класса соответствена своя таблица в БД и свое объявление в .java Проблема заключается в следующем: для работы функции broker.store(Object ...) необходимо не только наличие Object, но и принадлежнасть его к определенному классу, по этому классу функция определяеи куда вставлять данные (в какую таблицу) Мне же необходимо реализовать универсальную функцию в которую приходит объект неизвестного класса, который потом будем вставлять. Вопрос: Как это сделать? Собственно функция:
|
| Автор: powerOn 7.1.2007, 02:12 | ||
| Если у тебя камнем преткновения является определение принадлежности объекта к какому-либо классу, то это можно определить используя выражение instanceof. В документации посмотришь что да как. Ещё имя класса для объекта можно получить следующим образом:
|
| Автор: Asal 7.1.2007, 02:32 | ||
| Да в этом то и проблема что необходимо не просто получить название класса! необходимо определить переменную memberVO как переменную определенного класса что-то типо этого (но так нельзя ((( . такое объявление - глупость)
этим я хочу сказать что необходимо создать переменную того класса который к нам приходит, а как это сделать понятие не имею Наверное тут надо использовать что-то типо позднего связывания. Вот только не знаю как это реализовать это на Java |
| Автор: powerOn 7.1.2007, 02:38 | ||
| Ясно. тебе нужно смотреть в сторону http://java.sun.com/docs/books/tutorial/reflect/index.html. Он позволяет создавать объекты зная только его имя. А так же ещё очень многое. Например создание класса по имени:
|
| Автор: Asal 7.1.2007, 03:01 | ||||
| Да штучка класная ! Но ... Это все равно что сделать
а хчется все же
вот тут и возникает проблема с приведением типов, надо-то явно указать Может можно как-то конвертировать мой Object insertRecord в класс имя которого мы получим из insertRecord |
| Автор: LSD 7.1.2007, 14:45 | ||
Еще раз. Если ты заранее знаешь какого типа может быть объект, то используй instanceof или getClass(). Если же ты вообще не имеешь представления о том, что это за объект, то и конструкция типа:
тебе не поможет, т.к. об этом объекте на этапе компиляции ничего не известно. А поможет только Reflection. |
| Автор: Foo 7.1.2007, 14:55 | ||||||
несовсем понял что ты хочеш сделать, но если так как написано выше, то может тебе подойдет:
|