Я пытаюсь создать класс, который реализует интерфейс из библиотеки Java. ResultSet быть конкретным, хотя конкретный интерфейс не должен иметь отношение к вопросу. (Мне нужно поместить слой поверх обычного ResultSet, который предоставляет некоторые дополнительные функции, но я бы хотел, чтобы «обычные» функции проходили через него, и у меня есть пара функций, которые должны быть в состоянии принять либо обычный ResultSet или мой "улучшенный" ResultSet.)
Моя проблема: есть ли способ сделать это так, чтобы класс успешно компилировался как в Java 5, так и в Java 6?
Существует ряд функций, объявленных в интерфейсе ResultSet в Java 6, которые возвращают объекты, не определенные в Java 5. Если я включу эти функции, мой класс не будет компилироваться в Java 5, поскольку я ссылаюсь на неопределенные типы. Но если я не включу эти функции, мой класс не будет компилироваться в Java 6, потому что я не полностью реализую интерфейс. Кажется, я застрял в чем-то вроде уловки-22. На самом деле мне не нужна ни одна из этих функций - фактически моя реализация просто выдает «не реализованное» исключение для всех из них.
Некоторые из наших программистов используют Java 5, а некоторые - Java 6. Наша производственная среда - Java 5. Я полагаю, что в более совершенном мире все мы будем использовать одну и ту же версию. Но даже если я могу изменить нашу окружающую среду, чтобы сделать эту проблему MÕÕT в этом случае, конечно, этот вопрос приходит с проектами с открытым исходным кодом. И если я изменю свой код для работы с Java 5, то когда рано или поздно мы перейдем на Java 6, класс сломается, что кажется довольно раздражающим.
Обновление
Ну, спасибо за ответы. Я скорее надеялся, что кто-нибудь скажет мне: «О, если вы просто добавите эту аннотацию или напечатаете здесь букву« W », все будет работать волшебным образом». Наверное, нет такой удачи.
Все полученные ответы (во всяком случае, по состоянию на это обновление) дают хорошие оценки, поэтому я проголосовал за все из них и присудил награду «лучший ответ» за тот, который лучше всего выражает мое разочарование. : -)
Я думаю, что моим реальным решением будет отказаться от идеи реализации ResultSet и вместо этого создать новый интерфейс, который включает в себя только функции из ResultSet, которые должны быть реализованы для работы зверя. Я нахожу это эмоционально неудовлетворительным, но, похоже, лучше, чем альтернативы.