我正在学习 Java(这里是长期 C++ 人),并且在将 Integer 类转换为原始类型 int 时遇到了一些问题。我已经看到了几种解决方案,但似乎都没有。
使我的案例与众不同的是转换发生在泛型类中(整数是泛型参数)。该类扩展了 JProgressBar 并继承了自定义(模板化)接口 TaskObject。
ProgressBar 类的代码:
private class ProgressBar<Integer> extends JProgressBar
implements TaskObject<Integer> {
@Override
public void update(Integer val) {
System.out.println("pbar updating to " + val);
setValue(val);
}
}
TaskObject 接口代码:
interface TaskObject<T> {
void update(T value);
}
ProgressBar instacne 作为 TaskObject 的一种类型传递给 SwingWorker 线程并从该线程更新(因此是 update() 函数)。
不幸的是,setValue 不会采用 Integer 类型,并且使用 (int) 转换失败,以及 Integer 类转换方法。最后的具体错误说明“整数扩展了在类 ...ProgressBar 中声明的对象”。
很明显,我使用 Integer 作为通用参数这一事实使编译器在调用 JProgressBar.setValue() 时感到困惑......我对如何解决这个问题有一半的想法,但似乎很多为微利而工作,所以我想我会把它扔在那里,看看是否有其他人有意见......