2013-12-10 41 views
0

为什么这会给我一个不可串行化的概念?java为什么这给我notserializableexception

public class hData implements Serializable { 
    String Symbol; 
    double Position; 

    public hData(String Symbol, double Position){ 

     this.Symbol = Symbol; 
     this.Position = Position; 
    } 

} 


    public List<hData> HData;  

序列化这样的:

public String objectToString(Serializable object) { 
    String encoded = null; 

    try { 
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
    ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream); 
    objectOutputStream.writeObject(object); 
    objectOutputStream.close(); 
    encoded = new String(Base64.encode(byteArrayOutputStream.toByteArray())); 
    } catch (IOException e) { 
    e.printStackTrace(); 
    } 
    return encoded; 
    } 

,我把它叫做:

String hd = objectToString((Serializable) HData); 
+1

请发送引发异常的代码。 – arshajii

+0

您能否在发布代码示例异常时发布帖子? –

+0

列表是java.util.List? –

回答

0

我想它和它的作品。这是我的代码保存在hData.java中。 (顺便说一句,Java类是PascalCase的惯例,所以,HData是一个更好的类名)

import java.io.ByteArrayOutputStream; 
import java.io.IOException; 
import java.io.ObjectOutputStream; 
import java.io.Serializable; 
import java.util.ArrayList; 
import java.util.List; 

import com.sun.org.apache.xml.internal.security.utils.Base64; 

public class hData implements Serializable { 
    String Symbol; 
    double Position; 

    public hData(String Symbol, double Position){ 

     this.Symbol = Symbol; 
     this.Position = Position; 
    } 
    public static String objectToString(Serializable object) { 
      String encoded = null; 

      try { 
      ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
      ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream); 
      objectOutputStream.writeObject(object); 
      objectOutputStream.close(); 
      encoded = new String(Base64.encode(byteArrayOutputStream.toByteArray())); 
      } catch (IOException e) { 
      e.printStackTrace(); 
      } 
      return encoded; 
      } 
    public static void main(String[] args){ 
     List<hData> HData = new ArrayList<hData>(); 
     HData.add(new hData("hi", 1.2)); 
     String hd = objectToString((Serializable) HData); 
     System.out.print(hd); 
    } 
} 
相关问题