Как я могу идентифицировать 3 объекта для чтения данных из файла (Java)

#java #oop #read-write

#java #ооп #чтение-запись

Вопрос:

Я хочу прочитать все данные из 3 объектов, которые все остаются в одном и том же Arraylist. Например, у меня есть 3 класса: транспортное средство, такси, автомобиль. Классы Taxi, car наследоваются от supclass Vehicle. Arraylist, называемый vehiclelist, содержит такси, автомобиль, транспортное средство. Когда я записываю объект в файл, они получают разные свойства. Вот мой файл транспортного средства

 AAA232,23,TM,GG,222,123
ABC234,23,TA,ga,23,123,ATC
LMC232,23,TC,ga,23,123
  

Дело в том, что когда я читаю их из Vehicle.txt вернемся к списку массивов. Как компьютер может понять, какой из них принадлежит автомобилю или такси, и если у автомобиля есть 7 свойств, но у такси есть только 6 свойств, как я могу это решить. Вот мой код для чтения файла:

    static void readVehicleFile() {
        try {
            File f = new File("Vehicle.txt");
            Scanner SCF = new Scanner(f);

            while (SCF.hasNext()) {
                String record = SCF.nextLine();
                Scanner SCR = new Scanner(record);
                SCR.useDelimiter(",");

                String plateNum,model,make;
                int capacity,year,ownerID;

                plateNum = SCR.next();
                capacity = SCR.nextInt();
                make = SCR.next();
                model = SCR.next();
                year=SCR.nextInt();
                ownerID=SCR.nextInt();


                Vehicle vehicle = new Vehicle(plateNum,capacity,year,model,make,ownerID);
                vehicleList.add(vehicle);
            }
            SCF.close();
        } catch (FileNotFoundException e) {
            JOptionPane.showMessageDialog(null,"There is a error when saving file","Motor Vehicle Registration System",JOptionPane.ERROR_MESSAGE);

        }
    }  
  

Как вы можете видеть, все они считываются транспортным средством, а не автомобилем или такси, потому что, если я использую объект car, то транспортное средство не может работать, потому что у транспортного средства есть только 6 свойств. Есть ли какие-либо решения для этого.

Комментарии:

1. Я бы прочитал всю строку, затем проверил, сколько существует разделителей, и на основе этого количества создал экземпляр необходимого объекта.

2. Вы пытались посчитать количество значений в строке, чтобы определить, является ли это автомобилем?

3. Привет! Сначала подумайте о том, как бы вы решили, как человек, читающий файл, решает, какая строка какого типа. Затем вы должны реализовать эту логику в своем коде.

4. Как вы различаете Taxi и Vehicle ? Имеют ли эти типы по 6 столбцов на строку в файле?

5. Исправьте формат файла, чтобы он отображал тип данных.