【发布时间】:2013-10-07 03:04:25
【问题描述】:
我正在学习 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 类转换方法。最后的具体错误说明“Integer extends object declaration in class ...ProgressBar”。
很明显,我使用 Integer 作为通用参数这一事实使编译器在调用 JProgressBar.setValue() 时感到困惑......我对如何解决这个问题有了一半的想法,但它似乎做很多工作却收效甚微,所以我想我会把它扔在那里,看看有没有其他人有意见......
【问题讨论】:
-
你试过
val.intValue()吗? -
这是一个通用类。 Java 中没有模板,并且 template != generic。
标签: java generics type-conversion