SlideShare a Scribd company logo
Java весна 2013 лекция 7
Java весна 2013 лекция 7
Java весна 2013 лекция 7
Java весна 2013 лекция 7
ObjectOutputStream для этого потока
Java весна 2013 лекция 7
Java весна 2013 лекция 7
Java весна 2013 лекция 7
public class SerializationObject implements Serializable {
private String name; // name = Zoe
private int age; // age = 31
…
}
SerializationObject object = new SerializationObject("Zoe", 31);
FileOutputStream fileOut = new FileOutputStream("test.bin");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(object);
out.close();
private static final long serialVersionUID = -3895203507200457730L;
―
Java весна 2013 лекция 7
Java весна 2013 лекция 7
Java весна 2013 лекция 7
Java весна 2013 лекция 7
Java весна 2013 лекция 7
Java весна 2013 лекция 7
Java весна 2013 лекция 7
―
―
static Class<T> forName(String className)
String getCanonicalName()
Field getField(String name)
Class[] getInterfaces()
Method[] getMethods()
Constructor[] getConstructors()
getInterfaces()
Java весна 2013 лекция 7
Bootstrap class loader <JAVA_HOME>/jre/lib
Extensions class loader <JAVA_HOME>/jre/lib/ext
System class loader CLASSPATH
public static Object createIntance(String className){
try {
return Class.forName(className).newInstance();
} catch (…){}
}
public static void setFieldValue(Object object, String fieldName, String value){
try {
Field field = object.getClass().getDeclaredField(fieldName);
field.setAccessible(true);
if(field.getType().equals(String.class)){
field.set(object, value);
} else if ( field.getType().equals(int.class)){
field.set(object, Integer.decode(value));
}
field.setAccessible(false);
} catch(…){}
}
Java весна 2013 лекция 7
Java весна 2013 лекция 7
public class ObjectFactory {
public static Object readObject(String path) {
try {
FileInputStream fileOut = new FileInputStream(path);
ObjectInputStream in = new ObjectInputStream(fileOut);
Object object = in.readObject();
in.close();
return object;
} catch(IOException i) {
i.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}
}
Java весна 2013 лекция 7
―
―
―
―
Java весна 2013 лекция 7
Java весна 2013 лекция 7
Java весна 2013 лекция 7
org.xml.sax.helpers.DefaultHandler
startDocument()
startElement(…)
characters(…)
endElement(…)
endDocument()
Java весна 2013 лекция 7
<class type=“main.SerializationObject”>
<name>Zully</name>
<age>23</age>
</class>
public class SaxEmptyHandler extends DefaultHandler {
private static String CLASSNAME = "class";
private boolean inElement = false;
public void startElement(String uri, String localName, String qName, Attributes attributes) {
System.out.println("Start element: " + qName);
if(qName != CLASSNAME)
inElement = true;
else
System.out.println("Class name: " + attributes.getValue(0));
}
public void endElement(String uri, String localName, String qName) {
System.out.println("End element: " + qName);
inElement = false;
}
public void characters(char ch[], int start, int length) {
if(inElement)
System.out.println("Process : " + new String(ch, start, length));
}
}
public void startElement(String uri, String localName, String qName, Attributes attributes) {
if(qName != CLASSNAME){
element = qName;
}
else{
String className = attributes.getValue(0);
System.out.println("Class name: " + className);
object = ReflectionHelper.createIntance(className);
}
}
public void endElement(String uri, String localName, String qName) {
element = null;
}
public void characters(char ch[], int start, int length) {
if(element != null){
String value = new String(ch, start, length);
System.out.println(element + " = " + value);
ReflectionHelper.setFieldValue(object, element, value);
}
}
javax.xml.parsers.DocumentBuilderFactory
javax.xml.parsers.DocumentBuilder
org.w3c.dom.Document
File fXmlFile = new File(“test.xml”);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);





Java весна 2013 лекция 7
―
Java весна 2013 лекция 7
Java весна 2013 лекция 7
Java весна 2013 лекция 7
Вынести все параметры в XML файлы
Создать class ResourceFactory (singleton)
GameSessionResource resource =
(GameSessionResource) ResourceFactory.instance().get(“./GameResource.xml”)
Создать interface Resource и class GameSessionResource
Java весна 2013 лекция 7
31. Сериализация/десериализация. Interface Serializable.
32. Ключевое слово transient. Причины использования transient.
33. Reflection. Роль reflection в сериализации.
34. Шаблон проектирования Factory method.
35. SAX парсер.
36. DOM парсер.
37. Ресурсная система сервера.
Java весна 2013 лекция 7
Java весна 2013 лекция 7

More Related Content

PPTX
Java весна 2013 лекция 6
DOC
Java
PDF
Rambler.iOS #8: Чистые unit-тесты
PDF
1- Sourcecode Array
PPTX
Java осень 2012 лекция 6
PDF
Jeffri ferdinand panjaitan 17.01.132 (ti4 c)
PPTX
Java лаб13
Java весна 2013 лекция 6
Java
Rambler.iOS #8: Чистые unit-тесты
1- Sourcecode Array
Java осень 2012 лекция 6
Jeffri ferdinand panjaitan 17.01.132 (ti4 c)
Java лаб13

What's hot (20)

PDF
JUG.ua 20170225 - Java bytecode instrumentation
PPTX
Programming Java - Lection 03 - Classes - Lavrentyev Fedor
DOCX
Import java
PDF
Linked list proj
TXT
Binari searc
PDF
Sobrecarga e Sobrescrita - Preparatório Certificação - OCAJP7 - Aula 2 - F
DOCX
EJEMPLOS DESARROLLADOS
DOCX
Text Editor1
PDF
JQuery
PPTX
JS programowanie obiektowe
PDF
Java AWT Calculadora
DOCX
Form Pemesanan Tiket dengan Java NetBeans
PDF
Laporan ai modul 3-if b 2014-14102055-deprilana ego prakasa
DOCX
Taller de string(java)
DOCX
All set1
PDF
Java Script - Object-Oriented Programming
DOCX
Tugas praktek modul isbd
PDF
Java Thread Cronometro
PDF
Java & le pattern matching
JUG.ua 20170225 - Java bytecode instrumentation
Programming Java - Lection 03 - Classes - Lavrentyev Fedor
Import java
Linked list proj
Binari searc
Sobrecarga e Sobrescrita - Preparatório Certificação - OCAJP7 - Aula 2 - F
EJEMPLOS DESARROLLADOS
Text Editor1
JQuery
JS programowanie obiektowe
Java AWT Calculadora
Form Pemesanan Tiket dengan Java NetBeans
Laporan ai modul 3-if b 2014-14102055-deprilana ego prakasa
Taller de string(java)
All set1
Java Script - Object-Oriented Programming
Tugas praktek modul isbd
Java Thread Cronometro
Java & le pattern matching
Ad

Viewers also liked (6)

PDF
C++ осень 2012 лекция 8
PPTX
Java осень 2012 лекция 3
PPTX
Java осень 2012 лекция 4
PDF
Бизнес и системный анализ весна 2013 лекция 1
PPTX
Java весна 2013 лекция 8
PPT
Web весна 2012 лекция 7
C++ осень 2012 лекция 8
Java осень 2012 лекция 3
Java осень 2012 лекция 4
Бизнес и системный анализ весна 2013 лекция 1
Java весна 2013 лекция 8
Web весна 2012 лекция 7
Ad

More from Technopark (20)

PDF
Лекция 11. Вычислительная модель Pregel
PDF
Лекция 14. Hadoop в Поиске Mail.Ru
PDF
Лекция 13. YARN
PDF
Лекция 12. Spark
PDF
Лекция 10. Apache Mahout
PDF
Лекция 9. ZooKeeper
PDF
Лекция 7. Введение в Pig и Hive
PDF
Лекция 6. MapReduce в Hadoop (графы)
PDF
Лекция 5. MapReduce в Hadoop (алгоритмы)
PDF
Лекция 4. MapReduce в Hadoop (введение)
PDF
Лекция 3. Распределённая файловая система HDFS
PDF
Лекция 2. Основы Hadoop
PDF
Лекция 1. Введение в Big Data и MapReduce
PPTX
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
PPT
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
PPTX
СУБД 2013 Лекция №9 "Безопасность баз данных"
PPTX
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
PPTX
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
PPTX
СУБД 2013 Лекция №5 "Определение узких мест"
PPTX
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
Лекция 11. Вычислительная модель Pregel
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 13. YARN
Лекция 12. Spark
Лекция 10. Apache Mahout
Лекция 9. ZooKeeper
Лекция 7. Введение в Pig и Hive
Лекция 6. MapReduce в Hadoop (графы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 4. MapReduce в Hadoop (введение)
Лекция 3. Распределённая файловая система HDFS
Лекция 2. Основы Hadoop
Лекция 1. Введение в Big Data и MapReduce
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...

Java весна 2013 лекция 7

  • 9. public class SerializationObject implements Serializable { private String name; // name = Zoe private int age; // age = 31 … }
  • 10. SerializationObject object = new SerializationObject("Zoe", 31); FileOutputStream fileOut = new FileOutputStream("test.bin"); ObjectOutputStream out = new ObjectOutputStream(fileOut); out.writeObject(object); out.close();
  • 11. private static final long serialVersionUID = -3895203507200457730L;
  • 12.
  • 20.
  • 21. ― static Class<T> forName(String className) String getCanonicalName() Field getField(String name) Class[] getInterfaces() Method[] getMethods() Constructor[] getConstructors()
  • 24. Bootstrap class loader <JAVA_HOME>/jre/lib Extensions class loader <JAVA_HOME>/jre/lib/ext System class loader CLASSPATH
  • 25. public static Object createIntance(String className){ try { return Class.forName(className).newInstance(); } catch (…){} }
  • 26. public static void setFieldValue(Object object, String fieldName, String value){ try { Field field = object.getClass().getDeclaredField(fieldName); field.setAccessible(true); if(field.getType().equals(String.class)){ field.set(object, value); } else if ( field.getType().equals(int.class)){ field.set(object, Integer.decode(value)); } field.setAccessible(false); } catch(…){} }
  • 29. public class ObjectFactory { public static Object readObject(String path) { try { FileInputStream fileOut = new FileInputStream(path); ObjectInputStream in = new ObjectInputStream(fileOut); Object object = in.readObject(); in.close(); return object; } catch(IOException i) { i.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return null; } }
  • 38. public class SaxEmptyHandler extends DefaultHandler { private static String CLASSNAME = "class"; private boolean inElement = false; public void startElement(String uri, String localName, String qName, Attributes attributes) { System.out.println("Start element: " + qName); if(qName != CLASSNAME) inElement = true; else System.out.println("Class name: " + attributes.getValue(0)); } public void endElement(String uri, String localName, String qName) { System.out.println("End element: " + qName); inElement = false; } public void characters(char ch[], int start, int length) { if(inElement) System.out.println("Process : " + new String(ch, start, length)); } }
  • 39. public void startElement(String uri, String localName, String qName, Attributes attributes) { if(qName != CLASSNAME){ element = qName; } else{ String className = attributes.getValue(0); System.out.println("Class name: " + className); object = ReflectionHelper.createIntance(className); } } public void endElement(String uri, String localName, String qName) { element = null; } public void characters(char ch[], int start, int length) { if(element != null){ String value = new String(ch, start, length); System.out.println(element + " = " + value); ReflectionHelper.setFieldValue(object, element, value); } }
  • 40. javax.xml.parsers.DocumentBuilderFactory javax.xml.parsers.DocumentBuilder org.w3c.dom.Document File fXmlFile = new File(“test.xml”); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(fXmlFile);
  • 43.
  • 47. Вынести все параметры в XML файлы Создать class ResourceFactory (singleton) GameSessionResource resource = (GameSessionResource) ResourceFactory.instance().get(“./GameResource.xml”) Создать interface Resource и class GameSessionResource
  • 49. 31. Сериализация/десериализация. Interface Serializable. 32. Ключевое слово transient. Причины использования transient. 33. Reflection. Роль reflection в сериализации. 34. Шаблон проектирования Factory method. 35. SAX парсер. 36. DOM парсер. 37. Ресурсная система сервера.