Прерывает ли сериализацию импорт несериализуемого класса в класс, который реализует сериализуемый?

#java #android #android-intent #serialization

#java #Android #android-намерение #сериализация

Вопрос:

Прерывает ли сериализацию импорт несериализуемого класса в класс, который реализует сериализуемый?

 import com.xyz.NotSerializableClass;

public class SerializableClass implements Serialiazble{

   public SerializableClass(NotSerializableClass notSerialiazble){
       //do something to notSerialiazble
  }
}
  

Могу ли я по-прежнему использовать экземпляры SerializableClass для передачи в качестве дополнительного, например, в intent?

Ответ №1:

Это зависит от того, с чем именно вы это делаете NotSerializableClass . Пока SerializableClass не сохраняется ссылка на NotSerializableClass , все должно быть в порядке, но есть много тонких способов сохранения ссылки, таких как:

  • Ссылка на переменную notSerialiazble изнутри лямбда-выражения, определенного в конструкторе
  • Ссылка на переменную notSerialiazble изнутри анонимного внутреннего класса, созданного в конструкторе

И, конечно, несколько менее тонких способов:

  • Добавление NotSerializableClass в качестве поля
  • Добавление NotSerializableClass в качестве поля внутри внутреннего класса SerializableClass

И, возможно, еще несколько, они просто у меня в голове

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

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

2. Тогда вы должны быть в безопасности.

3. Спасибо за разработку различных сценариев, в которых сохраняется ссылка.