无法找到WeakReference符号

时间:2010-12-09 07:57:04

标签: java

已经导入弱引用但编译器找不到符号,有什么不对? DumpReceiver.java中有内存泄漏我认为使用后弱引用可能会释放吗?

import java.lang.ref.WeakReference;

Receiver r = new DumpReceiver(System.out);
WeakReference<Receiver> wr = new WeakReference<DumpReceiver>(r);


MidiInDump.java:64: cannot find symbol
symbol  : constructor WeakReference(javax.sound.midi.Receiver)
location: class java.lang.ref.WeakReference<DumpReceiver>
                WeakReference<Receiver> wr = new WeakReference<DumpReceiver>(r);

                                             ^

1 个答案:

答案 0 :(得分:4)

仔细查看错误消息。它不是在谈论课程(它发现这很好)。它在谈论构造函数。它没有找到在类型javax.sound.midi.Receiver上采用WeakReference<DumpReceiver>参数的构造函数。查看WeakReference<T>的JavaDoc,有一个构造函数接受T类型的参数。

您尝试创建WeakReference<DumpReceiver>但尝试传入javax.sound.midi.Receiver类型的对象。您需要改为创建WeakReference<Receiver>或将变量r更改为DumpReceiver类型。