gpt4 book ai didi

java - 如何在 Java 中为 ReferenceQueue.remove() 指定正确的类型?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:52:03 25 4
gpt4 key购买 nike

我有一个类 ReferenceQueueWeakReference

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() 的返回值但这无济于事。我尝试转换结果,但这只会将错误变成警告。

最佳答案

你应该使用 ReferenceQueue<V> , 不是 ReferenceQueue<WeakReference<V>> .您需要明确地将您从队列中拉出的引用强制转换为 WeakReference<V> .

关于java - 如何在 Java 中为 ReferenceQueue.remove() 指定正确的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16990474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com