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;
}
还有其他方法可以做到这一点吗?
我只想做类似的事情: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;
}
}
最佳答案
由于类型删除,这是完全不可能的。
最好让调用者传递 Class<T>
.
关于Java 泛型 TypeOf 返回 T,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12701345/