我有一个类用于保存用户可以通过 GUI 更改的数值。GUI 有一个 TextField(JavaFX 的),他们可以在其中写入所需的值。
因为我希望这个类是灵活的,所以我使用这样的泛型来实现它:
public class ConfigurableNumericField <T extends Number> {
private T value;
//...
public void setValue(T value){
this.value = value;
}
}
我创建了一个这样的对象:
ConfigurableNumericField <Integer> foo = new ConfigurableNumericField <> ( /*...*/ );
问题是 TextField 返回 a CharacterSequence
(可以转换为String
)。但是,即使所有继承自的类Number
都有该valueOf
方法,Number
也没有它。
因此,当我尝试setValue()
从String
TextField 到类本身时。我得到一个java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Number
.
我怎样才能做到这一点?