| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > компиляция кода для 1.4 в 1.3 |
| Автор: anonymouse 6.8.2007, 09:36 | ||
А это абстрактный класс или интерфейс. Проблема состоит в том что эта часть кода должна компилироваться в Java 1.3,1.4,1.5, но классы A и B в версии 1.3 не существуют. Как мне это реализовать. С помощью рефлекшион не получается из-за абстрактного класса. Заранее благодарен |
| Автор: anonymouse 6.8.2007, 10:47 |
| Это большой проект работающий стандартно 1.4. Но есть старые машины на платформе IBM. Там может быть только 1.3. Этот кусок будет использоваться только как фича, т.е. на 1.3 он работать не будет. Но важно чтобы он компилировался. Обычно эту проблему решают с помощью рефлекшиона Class.forName(...), но в данном случае, используется абстрактный класс. Неужели в модели Java-рефлекшн, ничего подобного не было реализовано ? |
| Автор: batigoal 6.8.2007, 12:58 |
| Вообще, у нас в коде индусы где-то создавали экземпляр абстрактного класса, сейчас покопаюсь... Добавлено через 4 минуты и 44 секунды Не могу найти... |
| Автор: anonymouse 6.8.2007, 13:14 | ||
Ну спасибо, ты считаешь что такой фигней только индусы занимаються Судя по всему через рефлекшион этого сделать никак нельзя. Придеться фейк класс писать. |
| Автор: AlexeyVorotnikov 6.8.2007, 14:42 |
| Абстрактный класс на то он и абстрактный, что создать его экземпляр невозможно даже теоретически. Уточните всё-таки постановку задачи. |
| Автор: batigoal 6.8.2007, 16:44 |
| AlexeyVorotnikov, через рефлекшн - можно было, по крайней мере, до 4-й Явы. Видел. |
| Автор: LSD 10.8.2007, 00:26 | ||
Посмотрел JavaDoc по JDK 1.1, и там написано:
Ты уверен, что они создавали именно абстрактный класс? |
| Автор: batigoal 10.8.2007, 08:36 |
Да. Когда мы этот фрагмент увидели, у меня волосы дыбом встали, такое не забывается Возможно, инстанцированию предшестовали некие махинации с абстракными методами, не знаю. |
| Автор: math64 10.8.2007, 09:48 | ||||||||
| Этот кусок кода и все другие которые работают под 1.4 выносишь и компилируешь под 1.4 Остальное компилируешь через 1.3 а для вызова кода 1.4 используешь Class.forName(). Возможно потребуются вспомогательные интерфейсы или абстратктые классы.
В итоге получатся 2 jar'а: один для 1.3, другой - расширения для 1.4 При использовании 1.4 второй jar включить в classpath или слить два jar в один. |
| Автор: AlexeyVorotnikov 10.8.2007, 10:00 | ||
Всё равно не могу себе представить как это может быть сделано. Где-то здесь что-то не так. |