【问题标题】:Serializing and Deserializing in Plain Text Format [duplicate]纯文本格式的序列化和反序列化[重复]
【发布时间】:2017-12-29 04:38:04
【问题描述】:

我正在制作一个板球锦标赛管理系统。我有一个名为 Player 的类和两个子类 BatsmanBowlerPlayer 类具有以下数据成员:

private String name;
private int ID;
private int age;
private int height;

现在 Batsman 类有 Batsman 特定成员,Bowler 类有一些 Bowler 特定成员。

我在 Player 类中有一个 abstract addRecord 方法,该方法在 Batsman 和 Player 类中都实现了。我希望以 ID 在文件中不重复的方式为两个子类使用一个公共文件。
然后我可以根据需要从文件中仅检索 Batsman 或 Bowler 的记录,并从中创建一个 Batsman 或 Bowler 对象数组。

有没有办法使用 Class.forName() 然后在运行时使用包含类名的字符串动态创建该类的实例。

请帮忙!

【问题讨论】:

  • 我不完全确定您在问什么,但您可以在创建对象后使用 instanceof 检查该对象是击球手还是投球手。
  • 编写一个单独的类来为BatsmanBowler 对象提供唯一的ID。
  • 我建议您为此使用数据库而不是文件。 - 你不能从一个文件中只读取一些“记录”,因为它没有被索引
  • @fab 我需要使用文件我想从文件中读取整行,然后使用 split() 来获取 ID 和其他字段。而且我的作业要求使用文件而不是数据库。
  • @MuhammadTayyabSheikh 你能举个例子,对象和文件应该是什么样子吗?

标签: java oop serialization deserialization file-handling


【解决方案1】:

这可能是你的开始:

public class IdCounter {

    private static Integer nextId;

    static int getNextId(){
        if (nextId == null){
            //read file and get highest ID
        }
        return nextId++;
    }
}


public class addRecord {

    private String name;
    private int ID;
    private int age;
    private int height;

    private void saveRecord(){
        if(ID==0){
            ID = IdCounter.getNextId();
        }
    }
}

如果您使用 UI,您可能需要一个线程保存解决方案,带有锁定... http://winterbe.com/posts/2015/04/30/java8-concurrency-tutorial-synchronized-locks-examples/

【讨论】:

  • 它是如何回答这个问题的?问题是“有没有办法使用 Class.forName() 然后在运行时使用包含类名的字符串动态创建该类的实例。”
  • @talex 最初的问题不是问“有没有办法使用 Class.forName()...” ;) stackoverflow.com/posts/48017467/revisions
猜你喜欢
  • 1970-01-01
  • 2011-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-04
  • 1970-01-01
相关资源
最近更新 更多