|
|
|
Создание enum
|
|||
|---|---|---|---|
|
#18+
Я переучиваюсь на Java. Хочу написать наследника который работает с полями и их значения ми. У меня 3 наследника все с разными полями. Хочется иметь возможность перебивать эти поля в родителе. В Delphi я делал так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. и далее работал CmtsValue и OIDCmts подставляя tbStat или индекс. В java я думаю можно сделать удобнее используя enum. Написал такой класс: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. от него унаследовал: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Поля разных типов! Возможно меня совсем не туда понесло только начал изучать java. Хочется использовать полиморфизм для того чтобы поле работать с TTable, а нужные поля описывать в дочерних классах. Надеюсь не очень путано написал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2012, 01:23:01 |
|
||
|
Создание enum
|
|||
|---|---|---|---|
|
#18+
1) getInstance(String key) можно реализовать в 1 строчку через рефлекию. 2) enum тебе вообще не нужен. В Java класслодеру достаточно информации о классе в самом классе. Ниакие дополнительные мета-записи не нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2012, 14:24:41 |
|
||
|
Создание enum
|
|||
|---|---|---|---|
|
#18+
mayton, Можно чуток по подробнее. В java я пока сильно плаваю и не понял к чему применить getInstance. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2012, 14:53:29 |
|
||
|
Создание enum
|
|||
|---|---|---|---|
|
#18+
Как-то так. Код: java 1. 2. 3. 4. 5. Исключения сам обработай на своё усмотрение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2012, 15:27:04 |
|
||
|
Создание enum
|
|||
|---|---|---|---|
|
#18+
mayton, Как я понимаю скорость будет приемлемой при использовании рефлексии getInstance. Только надо обзывать классы в соответствии с key(это root XML). Но вопрос то заключался в том, что мне нужно что то вроде двухмерного массива или массив классов, который определен в родителе. Значение поля должен быть вариант, а определяются название полей и их значения в дочерних классах. Я делаю парсинг XML файлов и хочу написать его красиво. Что бы для нового XML файла надо было только сделать нового наследника и назвать его в соответствии рутовым полем XML. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2012, 23:45:01 |
|
||
|
Создание enum
|
|||
|---|---|---|---|
|
#18+
ErikI, Вам нужно воссоздать объект из XML? Воспользуйтесь сериализацией ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2012, 00:36:21 |
|
||
|
Создание enum
|
|||
|---|---|---|---|
|
#18+
Usman, Нет мне надо пропарсить XML поместить значения в классы передать по сети(здесь будет сериализация) и на той стороне записать в базу данных. Для этого я сделал сканер директории сформировал список и проходя по этому списку вызываю парсер XML. В начале я определил кучу полей из структуры XML файла. Поле решил, что будет удобнее использовать одну структуру для хранения и записи в базу данных для различных таблиц. Вот и пытаюсь найти удобное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2012, 01:50:34 |
|
||
|
Создание enum
|
|||
|---|---|---|---|
|
#18+
UsmanErikI, Вам нужно воссоздать объект из XML? Воспользуйтесь сериализацией +1 что-то смахивает на велосипед IMHO. Т.к. в Delphi этого не было, и надо было всё руками делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2012, 10:40:20 |
|
||
|
Создание enum
|
|||
|---|---|---|---|
|
#18+
Petro123UsmanErikI, Вам нужно воссоздать объект из XML? Воспользуйтесь сериализацией +1 что-то смахивает на велосипед IMHO. Т.к. в Delphi этого не было, и надо было всё руками делать. Сериализация в XML была в D7 точно, а вроде и в D5 или D6 появилась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2012, 11:16:02 |
|
||
|
Создание enum
|
|||
|---|---|---|---|
|
#18+
ErikIUsman, Нет мне надо пропарсить XML поместить значения в классы передать по сети(здесь будет сериализация) и на той стороне записать в базу данных. Для этого я сделал сканер директории сформировал список и проходя по этому списку вызываю парсер XML. В начале я определил кучу полей из структуры XML файла. Поле решил, что будет удобнее использовать одну структуру для хранения и записи в базу данных для различных таблиц. Вот и пытаюсь найти удобное решение. Если таблиц с 10 или меньше, удобней сделать один Java-класс на таблицу и разметить его аннотациями hibernate и digester (или JAXB). Если классов больше, то надо брать рефлексию и тогда настройки можно вообще вынести в отдельный файл, туда же прикрутить обработку сложных случаев (например, поле FIO из XML кладется в FirstName, MiddleName, LastName в таблицу) и придется работать с SQL напрямую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2012, 11:23:34 |
|
||
|
Создание enum
|
|||
|---|---|---|---|
|
#18+
LeonidvСериализация в XML была в D7 я говорю не про теорию, а про практику. Она никому не нужна в разработке ПО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2012, 11:45:44 |
|
||
|
Создание enum
|
|||
|---|---|---|---|
|
#18+
Извините, но вы меня не так поняли. В XML не содержится никаких классов, это голые данные. Этот проект я делаю для собственного обучения. Что разобраться и в дальнейшем применять такие конструкции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2012, 12:01:46 |
|
||
|
Создание enum
|
|||
|---|---|---|---|
|
#18+
Petro123LeonidvСериализация в XML была в D7 я говорю не про теорию, а про практику. Она никому не нужна в разработке ПО. Я уже заметил это твое отношение к жизни ))) Не практика, В D7 можно было на основе XML сгенерировать все нужные классы-обертки для сериализации/десерелизации в XML. Работать было достаточно удобно. Если ты чего-то не знаешь, не значит, что этого не было. Довольно очевидный факт, не находишь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2012, 12:17:53 |
|
||
|
Создание enum
|
|||
|---|---|---|---|
|
#18+
ErikIИзвините, но вы меня не так поняли. В XML не содержится никаких классов, это голые данные. Этот проект я делаю для собственного обучения. Что разобраться и в дальнейшем применять такие конструкции. В XML никогда классы не содержаться. Но данные из XML можно отобразить в классы. Либо делать через рефлексию, как я написал выше. Приведите пример входных данных и таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2012, 12:19:19 |
|
||
|
Создание enum
|
|||
|---|---|---|---|
|
#18+
LeonidvErikIИзвините, но вы меня не так поняли. В XML не содержится никаких классов, это голые данные. Этот проект я делаю для собственного обучения. Что разобраться и в дальнейшем применять такие конструкции. В XML никогда классы не содержаться. Но данные из XML можно отобразить в классы. Либо делать через рефлексию, как я написал выше. Приведите пример входных данных и таблицу. Наверное при парсинге использовать рефлексию - не лучший выход. Автор, самый просто способ 1) генерите по xml файлу xsd схему(тулзы, допустим, Trang) 2) с помощью этой xsd генерите java классы с помощью встроенной в jdk утилиты jkd/bin/xjc.exe 3) Вставляете себе в проект эти классы(не забываем в ObjectFactory прописать правильный пакет или при генерации xjc его указать) 4) Делаем анмаршал и работает с xml как с обычной сущностью через get методы Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2012, 12:43:17 |
|
||
|
Создание enum
|
|||
|---|---|---|---|
|
#18+
Озверин, нда...там в коде еще работа с ресурсами, у меня xsd валяется в ресурсах, если что. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2012, 12:44:10 |
|
||
|
Создание enum
|
|||
|---|---|---|---|
|
#18+
Озверин Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Немного из кода убрал лишнего 4)Убрал валидтор для схемы, пока что он не нужен будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2012, 12:46:30 |
|
||
|
Создание enum
|
|||
|---|---|---|---|
|
#18+
LeonidvРаботать было достаточно удобно. ты в Delphi работал? Или в Java? Я тебе уже про Delphi рассказывал (ниже) Больше не собираюсь. Разговаривай с аффтаром а не со мной ______________________________________________ "Не понял" от Лёни 11906276 и чем всё закончилось 11910058 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2012, 12:47:08 |
|
||
|
Создание enum
|
|||
|---|---|---|---|
|
#18+
Petro123LeonidvРаботать было достаточно удобно. ты в Delphi работал? Или в Java? Работал в Delphi. Работаю в Java. Еще вопросы для моего досье? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2012, 13:12:03 |
|
||
|
Создание enum
|
|||
|---|---|---|---|
|
#18+
Озверин, Благодарю вас за пример, обязательно попробую сделать таким способом как только закончу предыдущий. Сейчас делаю парсинг основанный на DOM модели. Вот мой парсер: public class XMLParser { public ArrayList<HashMap<Integer, TFields>> start(List<String> FileList) { ArrayList<HashMap<Integer, TFields>> ListTable = new ArrayList<HashMap<Integer, TFields>>(); for (String Name : FileList) { try { Document doc = parserXML(new File(Name)); doc.getDocumentElement().normalize(); NodeList nodeList = doc.getElementsByTagName(doc.getDocumentElement().getChildNodes().item(1).getNodeName()); String Root = doc.getDocumentElement().getNodeName(); TFields Fields = TFields.getInstance(Root); HashMap<Integer, TFields> Table = new HashMap<Integer, TFields>(); for(int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i); if(node.getNodeType() == Node.ELEMENT_NODE) { Element element = (Element)node; Fields.Id = Node.ATTRIBUTE_NODE; Fields.SetNode(node.getNodeName(), node.getNodeValue()); } } Table.put(Fields.Id, Fields); ListTable.add(Table); } catch(Exception error) { error.printStackTrace(); } } return ListTable; } public Document parserXML(File file) throws SAXException, IOException, ParserConfigurationException { return DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file); } } Вызываю я его так: public static void main(String args[]) throws InterruptedException, IOException, NoSuchAlgorithmException { List<String> FileList; FileParser fp = new FileParser() ; FileList = fp.parse("c:\\Public\\1" , 4 , "([a-zA-Z]:)?(\\\\[a-zA-Z0-9\\\\.]+).xml") ; XMLParser XML_Parser = new XMLParser(); ArrayList<HashMap<Integer, TFields>> ListTable = XML_Parser.start(FileList); for (HashMap<Integer, TFields> iterListTable: ListTable) { // for (Iterator iterFields = iterListTable.iterator(); .hasNext();) for (int i = 0; i >iterListTable.size(); i++) //вот тут мне надо пройти по HashMap Table, вроде это можно сделать через итератор? { .................... } }; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2012, 16:22:32 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37914784&tid=2131153]: |
0ms |
get settings: |
14ms |
get forum list: |
21ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
44ms |
get topic data: |
15ms |
get forum data: |
4ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 285ms |
| total: | 475ms |

| 0 / 0 |
