@davespoon

Как решить проблему с сериализацией в java(конкретный пример из head first java)?

Здравствуйте! Начал изучать java по книге Head First Java(второе издание). И вот в главе 14, сериализация файлов, есть пример программы. Но суть в том, что этот пример не работает, даже с исходниками с официального сайта. Вот сам код :
первый файл
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;

public class GameSaverTest
{
    public static void main (String[] args) {
        GameCharacter one = new GameCharacter(50, "Elf", new String[] {"bow", "sword", "dust"});
        GameCharacter two = new GameCharacter(200, "Troll", new String[] {"bare hands", "big axe"});
        GameCharacter three = new GameCharacter(120, "Magician", new String[] {"spells", "invisibility"});
        
        try {
            ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("Game.ser"));
            os.writeObject(one);
            os.writeObject(two);
            os.writeObject(three);
            os.close();
        }
        catch (IOException ex) {
            ex.printStackTrace();
        }
        
        one = null;
        two = null;
        three = null;
        
        try {
            ObjectInputStream is = new ObjectInputStream(new FileInputStream("Game.ser"));
            GameCharacter oneRestore = (GameCharacter) is.readObject();
            GameCharacter twoRestore = (GameCharacter) is.readObject();
            GameCharacter threeRestore = (GameCharacter) is.readObject();
            
            System.out.println("One's type: " + oneRestore.getType());
            System.out.println("Two's type: " + twoRestore.getType());
            System.out.println("Three's type: " + threeRestore.getType());
        }
        catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}


второй файл:
package chap14;

import java.io.Serializable;

public class GameCharacter implements Serializable
{
    int power;
    String type;
    String[] weapons;
    
    public GameCharacter(int p, String t, String[] w)
    {
        power = p;
        type = t;
        weapons = w;
    }
    
    public int getPower() {
        return power;
    }
    
    public String getType() {
        return type;
    }
    
    public String getWeapons() {
        String weaponList = "";
        for (int i = 0; i < weapons.length; i++)
        {
            weaponList += weapons[i] + " ";
        }
        return weaponList;
    }
}


Ошибки при компилировании:
GameSaverTest.java:13: error: cannot find symbol
GameCharacter one = new GameCharacter(50, "Elf", new String[] {"bow", "sword", "dust"});
^
symbol: class GameCharacter
location: class GameSaverTest
GameSaverTest.java:13: error: cannot find symbol
GameCharacter one = new GameCharacter(50, "Elf", new String[] {"bow", "sword", "dust"});
^
symbol: class GameCharacter
location: class GameSaverTest
GameSaverTest.java:14: error: cannot find symbol
GameCharacter two = new GameCharacter(200, "Troll", new String[] {"bare hands", "big axe"});
^
symbol: class GameCharacter
location: class GameSaverTest
GameSaverTest.java:14: error: cannot find symbol
GameCharacter two = new GameCharacter(200, "Troll", new String[] {"bare hands", "big axe"});
^
symbol: class GameCharacter
location: class GameSaverTest
GameSaverTest.java:15: error: cannot find symbol
GameCharacter three = new GameCharacter(120, "Magician", new String[] {"spells", "invisibility"});
^
symbol: class GameCharacter
location: class GameSaverTest
GameSaverTest.java:15: error: cannot find symbol
GameCharacter three = new GameCharacter(120, "Magician", new String[] {"spells", "invisibility"});
^
symbol: class GameCharacter
location: class GameSaverTest
GameSaverTest.java:34: error: cannot find symbol
GameCharacter oneRestore = (GameCharacter) is.readObject();
^
symbol: class GameCharacter
location: class GameSaverTest
GameSaverTest.java:34: error: cannot find symbol
GameCharacter oneRestore = (GameCharacter) is.readObject();
^
symbol: class GameCharacter
location: class GameSaverTest
GameSaverTest.java:35: error: cannot find symbol
GameCharacter twoRestore = (GameCharacter) is.readObject();
^
symbol: class GameCharacter
location: class GameSaverTest
GameSaverTest.java:35: error: cannot find symbol
GameCharacter twoRestore = (GameCharacter) is.readObject();
^
symbol: class GameCharacter
location: class GameSaverTest
GameSaverTest.java:36: error: cannot find symbol
GameCharacter threeRestore = (GameCharacter) is.readObject();
^
symbol: class GameCharacter
location: class GameSaverTest
GameSaverTest.java:36: error: cannot find symbol
GameCharacter threeRestore = (GameCharacter) is.readObject();
^
symbol: class GameCharacter
location: class GameSaverTest
12 errors

Собственно все...
  • Вопрос задан
  • 624 просмотра
Решения вопроса 1
@davespoon Автор вопроса
Так, я прописал "import java.io.*;" в обоих файлах и все скомпилировалось. Но вот что характерно - я это сделал уже не в первый раз, и гадом буду, в предыдущие несколько ничего не работало. Впрочем, может я что-то натупил тогда, я умею. В любом случае проблема решена, всем спасибо за участие ;)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Пиши в средах разработки!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы