#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. Спасибо за разработку различных сценариев, в которых сохраняется ссылка.