Что означает действие в скобках?

120
16 июня 2021, 22:20

Что означает действие в скобках конкретно в моей ситуации?

GamePerson oneRestore = (GamePerson) myPers.readObject();

именно действие в скобках (GamePerson)

    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;

    public class Main {
        public static void main(String[] args) throws Exception {
            GamePerson one = new GamePerson(50 ,"Эльф",new String[] {"лук", "копье", "меч"});
            GamePerson two = new GamePerson(200 ,"Тролль",new String[] {"дубина", "палеса", "меч"});
            GamePerson three = new GamePerson(100 ,"Маг",new String[] {"посох", "книга заклинаний", "нож"});
            FileOutputStream personsGame = new FileOutputStream("personsGame.ser");
            ObjectOutputStream pG = new ObjectOutputStream(personsGame);
            pG.writeObject(one);
            pG.writeObject(two);
            pG.writeObject(three);
            one = null;
            two = null;
            three = null;
            try (ObjectInputStream myPers = new ObjectInputStream(new FileInputStream("personsGame.ser"))) {
                GamePerson oneRestore = (GamePerson) myPers.readObject();
                GamePerson twoRestore = (GamePerson) myPers.readObject();
                GamePerson threeRestore =(GamePerson)myPers.readObject();
                System.out.println("Ваш персонаж " + oneRestore.getType());
                System.out.println("Ваш персонаж " + twoRestore.getType());
                System.out.println("Ваш персонаж " + threeRestore.getType());
            }




        }
    }
       import java.io.Serializable;
public class GamePerson implements Serializable {
    int power;
    String type;
    String[] weapons;
    public GamePerson(int p, String t, String[] w) {
        power = p;
        type = t;
        weapons = w;
    }
    public String getType() {
        return type;
    }
}
Answer 1
GamePerson oneRestore = (GamePerson) myPers.readObject();

(GamePerson) означает преобразование типа.

myPers.readObject() возвращает (вероятно) результат типа Object (вернее, ссылку на Object), и без этого преобразования компилятор выдаст ошибку. Этим преобразованием (кастом - "cast") программист говорит компилятору, что он знает, что делает, что он уверен в том, что за ссылкой на Object скрывается GamePerson. Если же там не GamePerson (или наследник/реализация этого типа), а что-то другое, то произойдет ошибка выполнения (run-time error) - будет выброшено исключение.

READ ALSO
Как разбудить устройство в BroadcastReceiver?

Как разбудить устройство в BroadcastReceiver?

Условие: Есть приложение которое, в определённый момент, должно пробуждать устройство (экран устройства должен включится) и показывать уведомлениеРабота...

101
Как узнать общий объем ОЗУ в системе?

Как узнать общий объем ОЗУ в системе?

Смотрел в javadocТам написано, что в java 1

96
Удаление переноса строки из текста

Удаление переноса строки из текста

Есть файл с текстом типа " А1, Б2, В3,

120
получить SHA-1 APK файла по имени пакета

получить SHA-1 APK файла по имени пакета

Здравствуйте столкнулся с проблемой: нужно получить SHA-1 APK-файла заданного приложения, я могу получить пакет, версию, имя, но вообще не могу...

75