我想要一個通用單例的原因如下。Java中的通用Singleton問題
我有一個類XMLParser,它包含解析給定的XML的方法,並出來與該XML的POJO。
List<Student> studentList = XMLParser.getInstance().parse(Student.class, xml , String args[]);
現在是有意義的使XMLParser的類單身,因爲它沒有任何意義有XMLParser中的一個以上的對象。
現在上面的代碼語句會正確給我一個未經檢查的類型轉換警告。因爲我無法正確配置XMLParser爲通用的。
這裏就是麻煩的是發生
public class XMLParser<T> {
private static XMLParser reference=null;
String rootNode;
String requiredNode;
List<String> members;
Class<T> targetClass;
private XMLParser()
{
}
public static XMLParser getInstance()
{
if(reference==null)
reference= new XMLParser(); // i think I need new XMLParser<T>() here , but how can I transport T here ?
return reference;
}
正如你看到它是一個基本的單。我不能做到以下幾點
List<Student> stdent= XMLParser.getInstance<Student.class>().parse(etc etc)
我特別丟失,你可能會注意到。
我該怎麼辦?我剛剛研究並發現靜態變量不能使用類的類型參數。這是我需要的靜態變量「參考」。那麼隧道盡頭沒有燈光?
謝謝。
有一個通用的單身人士是一個壞主意,更糟糕的是,如果你使用它作爲原始類型。順便說一句,你可以有一個初始化方法,這個XML解析器是方法的局部變量,因此完全避免了單例。 –
可能是一個can或蠕蟲,但是如何處理一個XMLParserFactory,它包含一個實例化的XMLParsers的集合?然後XMLParserFactory.getInstance(class).parse(etc等); –
爲什麼不簡單地使XMLParser.parse通用?我不明白爲什麼你需要你的單例是通用的。例如:public List parse(類 T,...) –