Как получить доступ ко всем полям данных класса? - PullRequest
0 голосов
/ 20 апреля 2011

У меня есть некоторые классы, такие как Клиент, Сотрудник, Свойство. Я веду список всех объектов в виде списков массивов в именах классов NIC.Поэтому код Java для класса NIC выглядит следующим образом:

    class NIC
{
  static ArrayList<Employee> employeeList = new ArrayList<Employee>();
  static ArrayList<Property> propertyList = new ArrayList<Property>();
  static ArrayList<Client> clientList = new ArrayList<Client>();

 //rest of the code
  public static void backItUp()
  {
    //this method reads all the objects data from array lists and stores it in a file
  }
}

Я застрял в методе backItUp (), который должен считывать все данные объектов из списка массивов и сохранять их в файле.

Я не знаю, существует ли какой-либо метод, который может получить доступ ко всем полям данных текущего класса или по крайней мере возвращает ссылку на каждое поле данных.

Пожалуйста, помогите.Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 20 апреля 2011

Мне кажется, это хороший случай для сериализации. Посмотрите на http://java.sun.com/developer/technicalArticles/Programming/serialization/ или, может быть, немного погуглите.

1 голос
/ 21 апреля 2011

Лучший вариант - удалить модификаторы static из всех ваших полей и методов и сделать NIC подходящим объектом, для которого можно создать экземпляр. Когда вы будете придерживаться ООП (объектно-ориентированных принципов), вы обнаружите, что все становится проще. После этого все, что вам нужно сделать, это заставить NIC реализовать Serializable. Процедура сериализации по умолчанию автоматически сохраняет все в вашем классе, которое не помечено как transient. ArrayList s и все другие коллекции JDK уже сериализуемы, поэтому дальнейшая работа не требуется. Просто прочитайте руководство, опубликованное KDM.

Однако, если вы решите добавить больше полей или методов позже, у вас все равно останутся проблемы с совместимостью, поскольку старые сохраненные объекты больше не будут соответствовать сигнатуре нового, обновленного класса. Это соображение все программисты должны сделать. Использование serialVersionUID может немного помочь, например, в случаях, когда вы просто добавляете новые методы, но не вводите новые поля, но для обеспечения обратной совместимости необходимо надлежащее тестирование.

0 голосов
/ 20 апреля 2011

Члены класса доступны с Classname.membername. Вам не нужен дополнительный метод для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...