![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| vzf |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 10.9.2005 Репутация: нет Всего: 5 |
Здравствуйте.
Не знаете, можно ли получить поля класса в определенном порядке? Например, получить массив полей в том порядке, как они были объявлены в классе. Как я понял метод java.lang.Class.getDeclaredFields() возвращает массив полей класса в беспорядке. --------------------
Java - Write Once, Test EveryWhere! |
|||
|
||||
| w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Распарсить сырец.
-------------------- ![]() ![]() |
|||
|
||||
| vzf |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 10.9.2005 Репутация: нет Всего: 5 |
А есть другие решения какие-нибудь? Если нет, то парсера готового нет? или самому парсить надо?
--------------------
Java - Write Once, Test EveryWhere! |
|||
|
||||
| fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 6 Всего: 27 |
Очень интересно, а зачем это нужно?
-------------------- ![]() |
|||
|
||||
| vzf |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 10.9.2005 Репутация: нет Всего: 5 |
Сам пока не знаю, коллега попросил порыться и узнать можно или нет
--------------------
Java - Write Once, Test EveryWhere! |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Как показал эксперимент поля возвращаются в том порядке, в каком они объявлены (хотя это и не гарантируется).
А по поводу парсеров - вот например. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| vzf |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 10.9.2005 Репутация: нет Всего: 5 |
Благодарю. Пожалуй парсинг исходника не самое лучшее решение. На одном форуме посоветовали использовать свою аннотацию, при помощи которой отмечать поля. Возможно так и сделаем, хотя стоит вообще задуматься а "стоит ли овчинка выделки".
--------------------
Java - Write Once, Test EveryWhere! |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Анотации, дают еще меньше гарантий, что кто-то не перепутает порядок (случайно или сознательно). Кстати, в механизме сериализации используется простая сортировка полей по имени.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| evgenyt |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 17.7.2007 Где: Russia, Murmansk Репутация: нет Всего: нет |
Отсортируйте массив... хоть в каком порядке.. делов то. Хоть по имени, хоть по типу.... как угодно вобщем. |
|||
|
||||
| vzf |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 10.9.2005 Репутация: нет Всего: 5 |
не.... отсортировать не проблема, если знать как. Мне бы надо, чтоб они были отсортированы в том порядке, в котором объявлены в исходнике.
Пока 2 решения: - парсить исходник - использовать свои аннотации --------------------
Java - Write Once, Test EveryWhere! |
|||
|
||||
| fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 6 Всего: 27 |
Скажите зачем, а то умру от любопытства
-------------------- ![]() |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Можно еще именовать в алфавитном порядке в сырцах
|
|||
|
||||
| evgenyt |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 17.7.2007 Где: Russia, Murmansk Репутация: нет Всего: нет |
Ну а по другому я не представляю как.... да и к тому же практической пользы от этого не вижу. С точки зрения объектного подхода, не все ли равно как там свойства в классе записаны? Аннотациями можно очень просто сделать, только опять же можно ошибиться при записи аннотаций... ну скажем пропустить одно свойство. А исходник парсить проблематично, но зато это самый надежный вариант (хотяяя... это как реализовать). Есть конечно самый простой вариант - объявлять свойства в классе по алфавиту... тогда и делать вообще ничего не надо |
|||
|
||||
| vzf |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 10.9.2005 Репутация: нет Всего: 5 |
2 fixxer: Попробую объяснить (если сам правильно понял)
Сейчас они достаются методом java.lang.Class.getDeclaredFields(). Выдаются они все время в одинаковом порядке, но непонятно в каком. Иногда получается "некрасиво". Например, поле endDate на форме отображается раньше поля startDate. Хотелось бы чтоб они доставались в том порядке, что и объявлены в персистенте. Т.е. в персистенте я объявляю поля в том порядке который мне нужен. Затем достаю их и "бросаю" на форму. На форме они отобразятся уже в нужном мне порядке. --------------------
Java - Write Once, Test EveryWhere! |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Ну тогда аннотации или некий файл параметров - это то, что вам нужно.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |