已经导入弱引用但编译器找不到符号,有什么不对? 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);
^
答案 0 :(得分:4)
仔细查看错误消息。它不是在谈论课程(它发现这很好)。它在谈论构造函数。它没有找到在类型javax.sound.midi.Receiver
上采用WeakReference<DumpReceiver>
参数的构造函数。查看WeakReference<T>
的JavaDoc,有一个构造函数接受T
类型的参数。
您尝试创建WeakReference<DumpReceiver>
但尝试传入javax.sound.midi.Receiver
类型的对象。您需要改为创建WeakReference<Receiver>
或将变量r
更改为DumpReceiver
类型。