public Object Convert(Class<T> Type) {
if (Type == Integer.class) {
return Integer.parseInt(DataInfo);
} else if (Type == String.class) {
return DataInfo;
} else if (Type == Double.class) {
return Double.parseDouble(DataInfo);
}
return null;
}
有沒有其他方法可以做到這一點?Java通用類型返回T
我只想做這樣的事情:int X = Foo.Convert<int>();
當它需要一個字符串,並將其轉換爲<Type>
< -----那。我嘗試過:
public T Convert()
{
}
但我到處搜索和Java沒有typeof函數:S基本上試圖將字符串從用戶轉換爲數據類型。
編輯..我這麼問是因爲在C++中,我通常做的:
template <typename T>
inline T ToNumber(const std::string &Text){std::istringstream SS(Text); T Result; return (SS >> Result ? Result : 0);}
我想知道如果在Java中,我可以做到這一點..我用它喜歡:
package test;
import java.io.*;
import java.util.Scanner;
public class Data<T> {
private String DataInfo;
public String ReadBuffer() throws IOException {
BufferedReader Buffer = new BufferedReader(new InputStreamReader(System.in));
return (DataInfo = Buffer.readLine());
}
public String ReadConsole() {
Console Con = System.console();
return (DataInfo = Con.readLine());
}
public String Read() {
Scanner Reader = new Scanner(System.in);
return (DataInfo = Reader.next());
}
public Object Convert(Class<T> Type) {
if (Type == Integer.class) {
return Integer.parseInt(DataInfo);
} else if (Type == String.class) {
return DataInfo;
} else if (Type == Double.class) {
return Double.parseDouble(DataInfo);
}
return null;
}
}
你只能在C#中做到這一點。 – SLaks
相關:http://stackoverflow.com/questions/9950800/java-generic-string-to-t-parser – BalusC
你的功能的用戶通過它是通用的獲得什麼?換句話說,爲什麼用戶不需要'int x = Integer.parseInt(「2」);'當他需要'int','Foo f = Foo.valueOf(「fooData {2,3}」 )'當他需要'Foo'等時?在我看來,調用者需要知道具體的類型,邏輯會根據具體的類型做不同的事情,所以在泛型中沒有太大的收穫。 –