【发布时间】:2013-06-08 02:18:33
【问题描述】:
我有一堂课,ReferenceQueue 是 WeakReferences。
class Example<K,V>
{
ReferenceQueue<WeakReference<V>> queue = null;
Thread cleanup = null;
[...]
Example () {
queue = new ReferenceQueue<WeakReference<V>>();
cleanup = new Thread() {
public void run() {
try {
for (;;) {
WeakReference<V> ref = queue.remove();
[...]
但是当我尝试编译这个时,我得到一个“不兼容的类型”错误:
found : java.lang.ref.Reference<capture#189 of ? extends java.lang.ref.WeakReference<V>>
required: java.lang.ref.WeakReference<V>
WeakReference<V> ref = queue.remove();
^
我不明白这一点,因为我已将引用队列定义为 V 的弱引用队列,因此我期望 V 的弱引用是 remove() 的结果。
这是错的吗?我该如何解决这个问题?
我也尝试将Reference<V> 作为remove() 的返回值,但这无济于事。我尝试了强制转换结果,但这只会将错误变成警告。
【问题讨论】:
标签: java weak-references