More Related Content More from Technopark (20) Java весна 2013 лекция 710. SerializationObject object = new SerializationObject("Zoe", 31);
FileOutputStream fileOut = new FileOutputStream("test.bin");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(object);
out.close();
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);
}
}
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. Ресурсная система сервера.