Как преобразовать хеш-таблицу в абстрактный объект класса - PullRequest
0 голосов
/ 23 февраля 2012

Я занимаюсь разработкой синтаксического анализатора RSS-каналов, и я застрял на том, что мне следует от него получить. Я даю в качестве входных данных URL-адрес канала и элементы для чтения (пример: заголовок, описание ...), и я использовал для получения массива hashtable, где каждый ключ является элементом:

ArrayList<Hashtable<String,String>>

Но я бы хотел сделать что-то лучше. Поскольку в моем приложении есть классы, которые управляют новостями, полученными с разных URL-адресов (классы News1, News2, News3), я хотел бы вернуть ArrayList, где у каждого элемента есть абстрактный метод (его реализация будет меняться в зависимости от News1, 2 или 3 ) преобразовать хеш-таблицу в атрибуты объекта. Моя проблема в том, что я не знаю, как преобразовать каждый словарь в объект, производный от абстрактного класса ... Я даже пытался создать что-то вроде этого:

public abstract class GenericNews extends Hashtable<String, String> {
    public abstract News getObject();
}

но я не могу опустить это. Как я мог это сделать? Спасибо за вашу помощь.

1 Ответ

1 голос
/ 23 февраля 2012

Вы не сможете разыграть его.Вам нужно будет создать новый экземпляр вашего объекта GenericNews, который обернет HashTable, и вернуть его.

Кроме того, я не уверен, что имеет смысл расширять Hashtable в новостях Generic - почему бы не сделать ArrayListArrayList<GenericNews> и иметь методы в GenericNews для доступа к элементам внутри него, например getNewsItem(String keyword).

...