我是Java的新手,並且遇到以下問題:如何根據Java中的字符串值在方法中返回不同的類型?
我創建了幾個類,它們都實現了接口「Parser」。我有一個JavaParser,PythonParser,CParser,最後是一個TextParser。
我想寫一個方法,所以它會採取一個文件或一個字符串(代表文件名),並返回給定文件擴展名的適當的分析器。
這裏是什麼,我基本上是試圖做一些僞代碼:
public Parser getParser(String filename)
{
String extension = filename.substring(filename.lastIndexOf("."));
switch(extension)
{
case "py": return new PythonParser();
case "java": return new JavaParser();
case "c": return new CParser();
default: return new TextParser();
}
}
在一般情況下,這是處理這種情況的正確方法?另外,我應該如何處理Java不允許切換字符串的事實?我應該使用字符串的.hashcode()值嗎?
我覺得有一些設計模式或處理這個東西,但它逃避我。這是你怎麼做的?
對於OP:請注意使用'.equals()'而不是'=='。這很重要!谷歌「Java字符串等於」或什麼,看看爲什麼。 – MatrixFrog 2010-04-26 16:54:42
提及工廠方法模式的+1。 – CoolBeans 2010-04-26 17:06:53