我正在创建一个系统来保存和加载磁盘中的对象。我制作了一个包含读取和写入数据的方法的接口,该接口可以正常工作。我的程序中的任何需要保存的内容都可以实现此接口,并使用它来保存和读取需要使用的任何数据。问题在于在从磁盘读取对象时实际创建对象。现在,我保存对象的类名,然后在阅读它们时使用Class.forName(savedClassName).newInstance();
实例化它们。这个问题需要任何Savable
类有一个无参数的构造函数,但没有办法强制在接口本身。所以如果我或者和我一起工作的人尝试创建一个Savable对象,但忘记包含一个无参数的构造函数,那么将会有一些例外的方式,我们很可能甚至不会在很长时间内发现它们。我无法解决这个问题,因为似乎没有办法使用接口来要求可预测的方法来构造一个对象。我在从Java磁盘加载对象时遇到问题
2
A
回答
0
如何禁止没有默认构造函数的类被保存。这样,任何人尝试加载的唯一类是已保存的类,因此具有默认构造函数的类。
+1
这是减少可能的损害的好方法,但它仍然不能解决您必须记住每次实施Savable时都要包含无参数构造函数的问题。 – ChemicalRocketeer
0
您可能会创建一个抽象单元测试,测试默认构造函数(而不是其他)的存在并继承您的单元测试,这可能比您的层次结构中的抽象类限制性更少,并且应该指示构造函数丢失。
相关问题
- 1. JAVA - 加载基于对象的文件时遇到的问题
- 2. 从磁盘加载文件问题
- 3. Firefox在加载iframe时遇到问题
- 4. 我从磁盘加载XML时得到System.UnauthorizedAccessException
- 5. 在Java中创建对象数组时遇到问题
- 6. 在JAVA J2ee中加载父树结构时遇到问题
- 7. 查找FactoryGirl对象时遇到问题
- 8. 加载skobbler地图时遇到问题
- 9. 加载phar文件时遇到问题
- 10. 从磁盘加载程序
- 11. 添加新值到formData对象时遇到问题
- 12. 添加对象到ArrayList时遇到问题
- 13. 添加对象到NSMutableArray时遇到问题
- 14. 将对象添加到构造函数时遇到问题
- 15. 将unicode对象添加到列表中时遇到问题
- 16. 添加超过2个对象到矢量时遇到问题
- 17. 添加对象到数组时遇到问题
- 18. 在我的Java游戏窗口中加载图像时遇到问题
- 19. 将JSON加载到画布后获取对象时遇到问题 - Fabric JS
- 20. Java:加载记录文件数组时遇到问题
- 21. 批处理||我在从txt文件加载变量时遇到问题
- 22. 遇到问题在Java中
- 23. 在Wordpress儿童主题中加载脚本时遇到问题
- 24. 从Json使用Knockout创建对象时遇到问题
- 25. 从C++中的.txt文件加载数组时遇到问题
- 26. 使用Phaser从spritesheet加载sprite时遇到问题
- 27. 从web上加载大量图像时遇到问题
- 28. 打印时加载磁贴问题
- 29. 我在使用NSSize时遇到问题
- 30. 我在使用API时遇到问题
您是否尝试过使用抽象类来代替(或加上)接口? – Martin
为什么你没有使用Serializable和Object输入/输出流? – Ash
@Martin:抽象类将是相当严格的(没有其他类层次允许) – Ash