Как можно использовать временные переменные в классе, который реализует Parcelable? - PullRequest
0 голосов
/ 30 января 2019

Мне нужно понять, должна ли временная переменная внутри класса, реализующего интерфейс Parcelable, считываться из посылки в методе modelClass (Parcel parcel) или записываться в посылку в writeToParcel (Parcel parcelint i) .Может кто-нибудь предоставить мне реализацию класса с переходной переменной в нем.Спасибо.

Ответы [ 3 ]

0 голосов
/ 30 января 2019

Вы можете просто добавить временное ключевое слово перед типом данных при объявлении переменной.

class Parcel implements Parcelable{
   private Integer checkinId;
   private transient String someCode;

   //// some methods
}

interface Parcelable implements{
  // some methods
}
0 голосов
/ 30 января 2019

Ключевое слово "transient" не влияет на объекты, подлежащие продаже.Нет автоматизации при чтении и записи полей в объекте, подлежащем передаче, поэтому нет готового кода, который бы учитывал это.Любой возможный выбор специальной обработки для переходных полей полностью зависит от того, кто разрабатывает класс.

Спецификация (https://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.3.1.3) говорит: «Переменные могут быть помечены как переходные, чтобы указать, что они не являются частью постоянных».состояние объекта "поэтому, если вы действительно хотите идти по книге, вы не должны их писать. Но, как я уже сказал, поскольку чтение и запись выполняются механически внутри класса, ключевое слово transient не делает"не имеет большого смысла.

0 голосов
/ 30 января 2019
class Employee implements Serializable {
    private String firstName;
    private String lastName;
    private transient String confidentialInfo;

    //Setters and Getters
}
...