Кратчайший возможный ответ, который является технически правильным, но бесполезным для тех, кто не знаком с Java-бинами: Studentp194
не имеет свойства score
. Поэтому несуществующее свойство score
не кодируется в XML как XMLEncoder
.
Чтобы действительно понять, что происходит, если вы хотите продолжать использовать XMLEncoder
, который может быть, а может и не бытьлучшее решение для реальной проблемы, которую вы пытаетесь решить, вы должны прочитать о потрясающе древней, но (ИМХО) потрясающей спецификации Java Beans .
Для любого произвольного класса иметь JavaСвойство Beans с именем, скажем, foo
, тип которого Foo
, должно иметь метод public Foo getFoo()
и метод public void setFoo(Foo foo)
. Как вы можете видеть, ваш класс Studentp194
не имеет метода public int getScore()
и не имеет метода public void setScore(int score)
.
(Конечно, спецификация Java Beans фактически не требует, чтобы они былинеобходимые имена ваших методов. Вы можете настроить их несколькими способами, включая использование BeanInfo
классов , но это выходит за рамки этого вопроса.)
Возвращаясь к вашему вопросу и к вашему коду, XMLEncoder
не поможет вам с дизайном вашего класса как есть, так как ваш метод getScore
принимает параметры, а ваш метод setScore
принимает более одного параметра. Поэтому они не являются свойствами Java Beans;следовательно, XMLEncoder
не собирается, ну, в общем, кодировать их.
Допустим, вы хотели по какой-либо причине продолжать использовать XMLEncoder
. Тогда вам придется провести рефакторинг вашего класса, чтобы он соответствовал спецификации Java Beans. Я оставлю это как упражнение для читателя. :-)
Я предполагаю, что это какое-то задание, и использование XMLEncoder
является требованием присвоения. Если я не прав, тогда посмотрите на другой формат файла для хранения вашей информации и ее извлечения.
Если я прав, то вы хотите взглянуть на тот факт, что ваш класс Studentp194
логически связан с набором или массивом баллов. Возможно, вы захотите взглянуть в направлении фактического создания класса, представляющего результаты теста, и сохранения коллекции таких результатов теста в вашем классе Studentp194
. Еще лучше, возможно, ваш Studentp194
класс хочет быть связанным с другим классом, таким как Transcript
или чем-то подобным, где эта информация может храниться должным образом. Для получения дополнительной информации об этом декомпозиционном подходе к решению проблем прочитайте «третью нормальную форму» и перейдите оттуда. Надеюсь, это поможет и добро пожаловать в StackOverflow.