Java 如何将哈希表向下转换为抽象类对象

Java 如何将哈希表向下转换为抽象类对象,java,inheritance,hashtable,abstract-class,Java,Inheritance,Hashtable,Abstract Class,我正在开发一个提要RSS解析器,我一直在想我应该从中得到什么。 我输入提要的URL和要读取的元素(例如:title、description…),然后我得到哈希表的arraylist,其中每个键都是一个元素: ArrayList<Hashtable<String,String>> ArrayList 但我想把事情做得更好。由于我的应用程序中有一些类管理从不同URL检索的新闻(类News1、News2、News3),因此我想返回一个ArrayList,其中每个元素都有一个

我正在开发一个提要RSS解析器,我一直在想我应该从中得到什么。 我输入提要的URL和要读取的元素(例如:title、description…),然后我得到哈希表的arraylist,其中每个键都是一个元素:

ArrayList<Hashtable<String,String>>
ArrayList
但我想把事情做得更好。由于我的应用程序中有一些类管理从不同URL检索的新闻(类News1、News2、News3),因此我想返回一个ArrayList,其中每个元素都有一个抽象方法(其实现将根据News1、News2或News3而改变),以将哈希表转换为对象的属性。 我的问题是,我不知道如何将每一本字典转换成一个从astract类派生的对象……我甚至尝试创建如下内容:

public abstract class GenericNews extends Hashtable<String, String> {
    public abstract News getObject();
}
公共抽象类GenericNews扩展哈希表{
公共抽象新闻获取对象();
}
但我不能对此感到沮丧。我怎么做呢?
谢谢你的帮助。

你将无法施放它。您需要创建GenericNews对象的一个新实例来包装哈希表,并返回该实例


另外,我不确定在泛型新闻中实际扩展哈希表是否明智——为什么不将您的ArrayList设置为
ArrayList
,并在泛型新闻中使用方法来访问其中的项目,例如
getNewsItem(String关键字)

您能显示不起作用的代码吗?但是,一般来说,您不能将ArrayList类型的对象向下转换为新的子类型。首先必须创建该新子类型的对象。你的意思是我不应该将GenericNews类抽象化吗?不,我的意思是扩展哈希表是不合理的。您的泛型新闻对象使用哈希表来维护其内部新闻项,这并不意味着它是一个哈希表。好的,我将有这样的内容:“公共类GenericNews扩展哈希表{私有哈希表字典;公共字符串getItem(字符串项){…}”