2010-12-09 5 views
1

Déjà importer la référence faible mais le compilateur ne trouve pas le symbole, quel est le problème? Y at-il une fuite de mémoire dans DumpReceiver.java que j'ai pensé que la référence faible pourrait libérer après utilisation?Le symbole WeakReference est introuvable

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); 

              ^

Répondre

4

Regardez de près le message d'erreur. Il ne parle pas de la classe (c'est très bien). Il parle du constructeur. Il ne trouve pas un constructeur qui prend un argument javax.sound.midi.Receiver sur le type WeakReference<DumpReceiver>. En regardant le JavaDoc de WeakReference<T> il y a un constructeur qui prend un argument de type T.

Vous essayez de créer un WeakReference<DumpReceiver> mais essayez de transmettre un objet de type javax.sound.midi.Receiver. Vous devez soit créer une WeakReference<Receiver> à la place ou modifier la variable r pour qu'elle soit de type DumpReceiver.

+0

Je suis d'accord (+1). C'est le genre de chose qu'un EDI vous dit. –

+0

Ouais, étant développeur d'actionscript, j'ai encore beaucoup à apprendre, mais a constaté que ce n'est pas ce problème qui a causé une fuite de mémoire. Je me demande qui peut passer du temps à lire mon code MIDI? – Proyb2

+0

Je voulais dire que j'ai trouvé une fonction qui permet d'augmenter la mémoire après le vidage du code MIDI sur la console, si vous voulez le regarder? – Proyb2

Questions connexes