我有以下类:如何确定java中没有反射的泛型属性的类类型?
public final class Param<T>
{
private final String name;
private T value;
public Param(String name)
{
this.name = name;
}
public void setValue(T value) { this.value = value;}
public T getValue() { return value; }
}
我会初始化它以下列方式:
Param<Long> foo = new Param<>("bar");
Param<String> baz = new Param<>("foo");
我想一个public boolean validate(String value)
方法添加到这个类,它会做一些类似如下:
public boolean validate(String value)
{
try
{
if (this.value instanceof String)
return true;
if (this.value instanceof Long)
this.value = (T) Long.valueOf(value);
else if (this.value instanceof Integer)
this.value = (T) Integer.valueOf(value);
//Snip.. a few more such conditions for Double, Float, and Booleans
return true;
}
catch (NumberFormatException e)
{
return false;
}
}
我的问题是,将上述方法工作,用于正确地确定的“类型” 10并正确铸造string value
至T value
?或者我应该使用不同的方法来验证参数?
重复的[SO:在java中使用反射获取泛型参数的类型](http://stackoverflow.com/questions/1901164/get-type-of-a-generic-parameter-in-java-with-反射)? –
@ Mr.Polywhirl这个问题完全不同,我的思维与反思没有任何关系。事实上,我想不做反思。 –
你是否真的打算手动检查人类已知的每种类型? – 2rs2ts