- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用ObjectOutputStream保存对象,但是当我使用.writeObject(this)将其保存为文件时,无法保存 Material 。我定义的类已经是可序列化的。
public class LanguageModel implements Serializable {
private static LanguageModel lm_;
/* ******************************* */
//word -> count(w)
public static Dictionary unigramDict = new Dictionary();
//word_pair -> count(wi,wi+1)
public static Dictionary bigramDict = new Dictionary();
private static int wordIdCounter = 0;
/* ***************************** */
// Do not call constructor directly since this is a Singleton
private LanguageModel(String corpusFilePath) throws Exception {
constructDictionaries(corpusFilePath);
}
public void constructDictionaries(String corpusFilePath)
throws Exception {
...
}
// Saves the object (and all associated data) to disk
public void save() throws Exception{
FileOutputStream saveFile = new FileOutputStream(Config.languageModelFile);
ObjectOutputStream save = new ObjectOutputStream(saveFile);
save.writeObject(this);
save.close();
}
// Creates a new lm object from a corpus
public static LanguageModel create(String corpusFilePath) throws Exception {
if(lm_ == null ){
lm_ = new LanguageModel(corpusFilePath);
}
return lm_;
}
}
我定义的类如下:
import java.io.Serializable;
import java.util.HashMap;
public class Dictionary implements Serializable {
private int termCount;
private HashMap<String, Integer> map;
public int termCount() {
return termCount;
}
public Dictionary() {
termCount = 0;
map = new HashMap<String, Integer>();
}
...
}
当我尝试save.writeObject(unigramDict)
时,它可以正确保存这个变量。由于它是一个很大的变量,我可以简单地检查文件的大小。是5MB。当我切换到 save.writeObject(this)
时,文件的大小只有 53 字节。
最佳答案
我认为您遇到了静态字段的问题,这些静态字段不能使用 save.writeObject(this)
保存。
来自ObjectOutputStream
javadoc:
The default serialization mechanism for an object writes the class of the object, the class signature, and the values of all non-transient and non-static fields.
您只需将 unigramDict
和 bigramDict
设置为非静态字段,并使用 LangugageModel.lm_.unigramDict
访问它即可。
也许你可以看看singleton pattern而不是将所有字段设置为静态
。
关于java - writeObject(this) 无法写入对象,java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23272131/
我想编写一个 cmdlet,从数据库中读取多条记录并将它们放入管道。 我想我可以做一个WriteObject(Enumerable, true)或者我可以自己循环并调用 WriteObject多次。
什么更快? out.writeObject(someString) 或 out.writeUTF(someString) 最佳答案 我希望人们从这个问题中学到两件事:Java 序列化很慢 - 忍受它。
我对这段代码有一些问题...这是一个 JDialogForm,其中有 jTextField 和按钮。当我单击按钮在另一个窗口中使用它时,我想保存此 Jtextfield 中的数据,但我不知道为什么它不
我正在尝试做什么 我有一个服务器类,故意没有传递任何参数,并且想用 Mockito 测试它。 如果您想查看 Github 上的完整源代码: Server ServerTest 服务器.class pu
我正在学习垃圾收集和 Java 对象序列化。在我包含序列化代码之前的代码中,3 个对象正在完成。现在只有一个 finalize() 被调用并在创建 FileOutputStream 对象后进入我的程序
我正在开发一个应用程序,该应用程序必须将对象序列化为文件以供以后使用。有多个线程调用方法writeObject (对于不同的对象,相同的文件)并发。该方法是线程安全的吗?我是否必须在应用程序代码中同步
对于类作业,我需要将对象写入文件。我们的教授给了我们一段代码来完成这个任务,但显然它是错误的,因为我收到了一个错误。这是我的代码。 class InvMaintenance { //creat
我有一些通过 RMI 序列化同时访问的对象。最近我编写了自定义序列化方法: /** This method is made to omit serialization of this.order */
似乎是一个非常简单的问题,但我在谷歌上找不到直接答案。 我在两个进程之间通过 UDP 有一个简单的 IPC channel 。每条消息都包装在 header 类中(例如数据驱动)。 例如。 enum
我正在使用ObjectOutputStream保存对象,但是当我使用.writeObject(this)将其保存为文件时,无法保存 Material 。我定义的类已经是可序列化的。 public cl
我正在尝试实现一个保存功能来保存游戏的当前状态。这是我的代码: public class MyGame extends javax.swing.JFrame implements Serializab
我正在做一些关于 Java 的作业,但我不擅长它,并且在尝试使用 XMLEncoder 将 App 对象存储到文件时遇到问题。 简而言之,我的应用程序有一个名为 animal 的抽象类。另一个扩展了前
这似乎是一个奇怪的问题,但看看这个简单的代码: public class Father implements Serializable{ private static final long s
我希望我不只是发现 Java 中的错误!我正在运行 JDK 7u11(主要是因为这是我的雇主允许的认可的 JVM),并且我注意到一个非常奇怪的问题。 也就是说,我将数据分块到 LinkedHashSe
我正在创建一个软件,多个客户端可以在“同一” Canvas 上绘图。这是通过将绘制点的 ArrayList 发送到服务器并返回来完成的。现在,我已经设置了 ListArray,但我需要它不断更新,以便
我正在为我的一堆类使用序列化代理模式,并且最近将 FindBugs 添加到我的构建过程中,现在我想知道 FindBugs 是否正确...... 这是有问题的类: public class Block
我想使用 ObjectOutputStream.writeObject() 将哈希表序列化为文件,但我希望编写器始终覆盖任何现有对象,以便只存在一个对象: FileOutputStream fout
你好,我想告诉你,我为我的游戏制作了多人游戏并且它有效,但是从欧洲的一侧到另一侧,需要 8 秒。没有太多要发送的,它只发送一个具有 float x,float y 和 String username
需要序列化,我理解这一点,但是 stream.defaultWriteObject() 如何实际访问它们,因为它们是私有(private)的、静态的和最终的。 我的 CS 讲师无法解释这一点(或者他只
我正在尝试创建一些本地聊天软件。一切正常,但只停留在一点上;当用户单击按钮时,我的程序会卡住。 我编写了一个修改后的类,它的行为适用于服务器和客户端。 下面是我的代码: package connect
我是一名优秀的程序员,十分优秀!