Tag: 序列化

序列化ArrayList Java

我想序列化ArrayList类型的Arraylist,该类包含两个原始类型的Arraylist public class Keyword { private long id; private long wid; private String name; private ArrayList rank; private int month; private float avg; private ArrayList date; … and so on } 我怎样才能做到这一点? 非常感谢提前

可以通过C#反序列化序列化的简单java对象吗?

假设java类的所有字段都是java原语,如果这样的对象已被序列化,那么C#是否可以成功地将其反序列化为“等效”C#类的实例? 反过来可能 – C#到java? 我意识到有许多与语言无关的格式,例如可用于完成工作的XML。 我更感兴趣的是使用本机序列化数据是否可行。

lambda创建后的序列化

我可以使用以下语法序列化lambda : Runnable r = (Runnable & Serializable) () -> System.out.println(“”); try (ObjectOutput oo = new ObjectOutputStream(new ByteArrayOutputStream())) { oo.writeObject(r); } 但是,如果我从客户端代码收到lambda并且没有正确转换,我无法序列化它。 如何在不更改其定义的情况下序列化以下r : Runnable r = () -> System.out.println(“”); 我试图序列化“派生”对象: Runnable r1 = (Runnable & Serializable) r::run; Runnable r2 = (Runnable & Serializable) () -> r.run(); 但在每种情况下, oo.writeObject(rxxx); 失败并出现NotSerializableException 。

反序列化多个Java对象

亲爱的同事们, 我有一个Garden类,我在其中序列化和反序列化多个Plant类对象。 序列化工作正在进行,但是如果要在mein静态方法中将其分配给调用变量,则反序列化不起作用。 public void searilizePlant(ArrayList _plants) { try { FileOutputStream fileOut = new FileOutputStream(fileName); ObjectOutputStream out = new ObjectOutputStream(fileOut); for (int i = 0; i < _plants.size(); i++) { out.writeObject(_plants.get(i)); } out.close(); fileOut.close(); } catch (IOException ex) { } } 反序列化代码: public ArrayList desearilizePlant() { ArrayList plants = new ArrayList(); Plant _plant = null; […]

Java – 使用nio的ReadObject

在传统的阻塞线程服务器中,我会做这样的事情 class ServerSideThread { ObjectInputStream in; ObjectOutputStream out; Engine engine; public ServerSideThread(Socket socket, Engine engine) { in = new ObjectInputStream(socket.getInputStream()); out = new ObjectOutputStream(socket.getOutputStream()); this.engine = engine; } public void sendMessage(Message m) { out.writeObject(m); } public void run() { while(true) { Message m = (Message)in.readObject(); engine.queueMessage(m,this); // give the engine a message with this as […]

有效的Java项目#77 – 单例对象的序列化 – 为什么我必须使用readResolve?

有效的Java #77声明我们必须使用readResolve在序列化期间保留Singleton保证。 他们使用了这个例子。 public class Elvis implements Serializable{ public static final Elvis INSTANCE = new Elvis(); private Elvis() { … } public void leaveTheBuilding() { … } 他们建议使用 如果Elvis类用于实现Serializable,则以下readResolve方法足以保证singleton属性: // readResolve for instance control – you can do better! private Object readResolve() { // Return the one true Elvis and let the garbage collector // […]

如何序列化ObservableList

我正在开发一个javaFx项目,我们必须使用ObservableList来添加Listners。 ObservableList包括人员模型。 但我想通过序列化将整个ObservableList对象存储在一个文件中。 但它给了我一个例外 。 我还对对象Model上的序列化表示赞同,但没有运气。 是否有任何序列化ObservableList的方法? EmployeeModel package com.company.Model; import javax.persistence.*; import java.io.Serializable; /** * Created by Sunny on 1/8/2016. */ @Entity @Table(name = “Employee”, schema = “”, catalog = “PUBLIC”) public class EmployeeEntity implements Serializable { private String empId; private String empAddress; private String empNumber; private String empFirstName; private String empLastName; public EmployeeEntity(String […]

服务器和客户端必须具有声明ObjectOutputStream和ObjectInputStream的反向序列吗?

在我的实验中, 如果服务器有这个: ObjectInputStream objectInputStream = new ObjectInputStream(socket.getInputStream()); ObjectOutputStream objectOutputStream = new ObjectOutputStream(socket.getOutputStream()); 然后客户端必须以相反的顺序执行此操作: ObjectOutputStream objectOutputStream = new ObjectOutputStream(socket.getOutputStream()); ObjectInputStream objectInputStream = new ObjectInputStream(socket.getInputStream()); 否则服务器和客户端将死锁。 这是什么原因? 它是否有正式的API规范?

jackson序列化:如何忽略超类属性

我想序列化一个不受我控制的POJO类,但是想要避免序列化来自超类的任何属性,而不是序列化来自最终类的属性。 例: public class MyGeneratedRecord extends org.jooq.impl.UpdatableRecordImpl, example.generated.tables.interfaces.IMyGenerated { public void setField1(…); public Integer getField1(); public void setField2(…); public Integer getField2(); … } 您可以从示例中猜测此类是由JOOQ生成的,并且inheritance自复杂的基类UpdatableRecordImpl,它还具有一些类似于bean属性的方法,这会在序列化期间导致问题。 此外,我有几个类似的类,因此最好避免为我生成的所有POJO重复相同的解决方案。 到目前为止,我找到了以下可能的解决方案: 使用mixin技术忽略来自超类的特定字段,如下所示: 如何告诉jackson忽略我无法控制源代码的属性? 这个问题是如果基类发生变化(例如,新的getAnything()方法出现在它中),它可能会破坏我的实现。 实现自定义序列化程序并在那里处理问题。 这对我来说似乎有点矫枉过正。 顺便说一下,我有一个接口,它描述了我想要序列化的属性,也许我可以混合一个@JsonSerialize(as = IMyGenerated.class)注释……? 我可以将此用于我的目的吗? 但是,从纯粹的设计角度来看,最好的方法是能够告诉jackson我只想序列化最终类的属性,并忽略所有inheritance的属性。 有没有办法做到这一点? 提前致谢。

在UDP上发送和接收序列化对象

我试图使用UDP将服务器进程中的序列化对象发送到Java中的客户端进程。 问题是客户端在receive方法上被阻止。 有人可以帮忙吗?! 这是发送对象的服务器代码: ClientModel C1= new ClientModel(100,”Noor”,”Noor”,38,38,”asd”); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(C1); oos.flush(); byte[] Buf= baos.toByteArray(); packet = new DatagramPacket(Buf, Buf.length, client, port); socket.send(packet); 这是接收对象的客户端代码: byte[] buffer = new byte[100000]; packet = new DatagramPacket(buffer, buffer.length ); socket.receive(packet); System.out.println(“packet received”); 我只想接收能够重建的对象但我无法接收数据包本身。