我正在創建一個系統來保存和加載磁盤中的對象。我製作了一個包含讀取和寫入數據的方法的接口,該接口可以正常工作。我的程序中的任何需要保存的內容都可以實現此接口,並使用它來保存和讀取需要使用的任何數據。問題在於在從磁盤讀取對象時實際創建對象。現在,我保存對象的類名,然後在閱讀它們時使用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