⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 persistencedelegatetest.java

📁 这是java2核心技术第七版的源代码
💻 JAVA
字号:
import java.awt.*;import java.awt.geom.*;import java.beans.*;import java.io.*;import java.net.*;import java.util.*;/**   This program demonstrates various persistence delegates. */public class PersistenceDelegateTest{   public enum Mood { SAD, HAPPY };   public static void main(String[] args) throws Exception   {      XMLEncoder out = new XMLEncoder(System.out);      out.setExceptionListener(new         ExceptionListener()         {            public void exceptionThrown(Exception e)            {               e.printStackTrace();            }         });      PersistenceDelegate delegate = new          DefaultPersistenceDelegate()         {            protected Expression instantiate(Object oldInstance, Encoder out)             {               Employee e = (Employee) oldInstance;               GregorianCalendar c = new GregorianCalendar();               c.setTime(e.getHireDay());               return new Expression(oldInstance, Employee.class, "new",                  new Object[]                   {                      e.getName(),                      e.getSalary(),                      c.get(Calendar.YEAR),                      c.get(Calendar.MONTH),                      c.get(Calendar.DATE)                  });            }         };      out.setPersistenceDelegate(Employee.class, delegate);      out.setPersistenceDelegate(Rectangle2D.Double.class,         new DefaultPersistenceDelegate(new String[] { "x", "y", "width", "height" }));      out.setPersistenceDelegate(Inet4Address.class, new         DefaultPersistenceDelegate()         {            protected Expression instantiate(Object oldInstance, Encoder out)             {               return new Expression(oldInstance, InetAddress.class, "getByAddress",                   new Object[] { ((InetAddress) oldInstance).getAddress() });            }                    });      out.setPersistenceDelegate(BitSet.class, new         DefaultPersistenceDelegate()         {            protected void initialize(Class type, Object oldInstance, Object newInstance,                Encoder out)             {               super.initialize(type, oldInstance, newInstance, out);               BitSet bs = (BitSet) oldInstance;                       for(int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1))                   out.writeStatement(new Statement(bs, "set", new Object[]{ i, i + 1, true }));            }         });      out.setPersistenceDelegate(Mood.class, new EnumDelegate());      out.writeObject(new Employee("Harry Hacker", 50000, 1989, 10, 1));      out.writeObject(new java.awt.geom.Rectangle2D.Double(5, 10, 20, 30));      out.writeObject(InetAddress.getLocalHost());      out.writeObject(Mood.SAD);       BitSet bs = new BitSet(); bs.set(1, 4); bs.clear(2, 3);      out.writeObject(bs);       out.writeObject(Color.PINK);      out.writeObject(new GregorianCalendar());      out.close();   }   static   {      try       {         BeanInfo info = Introspector.getBeanInfo(GregorianCalendar.class);         for (PropertyDescriptor desc : info.getPropertyDescriptors())             if (desc.getName().equals("gregorianChange"))                desc.setValue("transient", Boolean.TRUE);      }       catch (IntrospectionException e)       {          e.printStackTrace();       }         }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -