Я заметил, что в Java вы можете использовать класс, который имеет члены типов, которые недоступны вам. Например, предположим, что у вас есть предварительно скомпилированный файл .class
для следующего класса Person
; но не для Address
, который он использует:Явный переходный тип переменной должен быть известен для сериализации?
public class Person implements Serializable {
private static final long serialVersionUID = 1L;
private String sex;
private String name;
private transient Address address;
public Person(String sex, String name) {
this.sex = sex; this.name = name;
}
public void setAddress(Address address) {
this.address = address
}
}
Вы можете создать экземпляр этого класса с Person person = Person("Male", "Andrew");
даже если тип Address
не доступен для вашего проекта Java.
Теперь проблема, если вы хотите сериализовать Person
объект, вы не можете сделать это, если Address
типа не доступен (т.е. может быть загружен загрузчиком классов), даже несмотря на то, Address
поля преходяще.
почему Java нужно знать тип Address
, даже если это не нужно сериализовать ...
Любая помощь о том, как я мог сериализации Person
в любом случае без необходимости переопределить Person
класс без адреса? И любое объяснение того, почему Java должен знать тип адреса, хотя его не нужно сериализовать?
Большое спасибо.
Я понятия не имею, что вы пытаетесь сказать ........ ли вы имеете в виду адрес будучи пустой? – Thihara
Нет, адрес является неопределенным типом, это означает: отсутствие файла класса Address. Прочитайте ответ matts ниже, если вы хотите получить ответ на этот вопрос. Он ответил правильно. –
Я отредактировал ваш вопрос в соответствии с предположением, полученным ответом, который вы приняли. Если это действительно то, что вы делали, это делает ваш вопрос более понятным и пригодным для будущих посетителей. – jpaugh