2010-04-15 4 views
3

У меня есть необходимость сериализации объекта Area (java.awt.geom.Area) в сокете. Однако это не похоже на сериализуемость. Есть ли способ сделать такое? Может быть, путем преобразования его в другой объект?Сериализовать java.awt.geom.Area

Заранее спасибо

ответ

1

Используйте XStream к тривиальным преобразовать его в/из XML. Вам не нужен ваш объект для реализации определенных интерфейсов, и сериализация настраивается.

+0

Благодарим за отзыв. К сожалению, я не могу отправить слишком много информации, поэтому я не могу удовлетворить XML. – Jack

6

Я нашел обходной путь:

AffineTransform.getTranslateInstance(0,0).createTransformedShape(myArea) 

Это приводит к форме, которая может быть сериализации.

0

Из ответа Кистээ это обход может быть получен.

import java.awt.Shape; 
import java.awt.geom.AffineTransform; 
import java.awt.geom.Area; 
import java.io.IOException; 
import java.io.Serializable; 

public class SerialArea extends Area implements Serializable { 
    private static final long serialVersionUID = -3627137348463415558L; 

    /** 
    * New Area 
    */ 
    public SerialArea() {} 

    /** 
    * New Area From Shape 
    */ 
    public SerialArea(Shape s) { 
     super(s); 
    } 

    /** 
    * Writes object out to out. 
    * @param out Output 
    * @throws IOException if I/O errors occur while writing to the 
    * underlying OutputStream 
    */ 
    private void writeObject(java.io.ObjectOutputStream out) 
      throws IOException { 
     out.writeObject(AffineTransform.getTranslateInstance(0, 0). 
      createTransformedShape(this)); 
    } 
    /** 
    * Reads object in from in. 
    * @param in Input 
    * @throws IOException if I/O errors occur while writing to the 
    * underlying OutputStream 
    * @throws ClassNotFoundException if the class of a serialized object 
    * could not be found. 
    */ 
    private void readObject(java.io.ObjectInputStream in) 
      throws IOException, ClassNotFoundException { 
     add(new Area((Shape) in.readObject())); 
    } 
} 
Смежные вопросы