Can not refer to a non final variable...

Status
Nicht offen für weitere Antworten.

Pelznase

Mitglied
Hi!

ich glaub ich steh auf dem Schlauch und komm da nimmer raus.
In der folgenden Methode (innere Klasse vom WindowListener) meckert mich der Compiler an dass er die Variable lieber final haette (Cannot refer to a non-final variable jlPlayer inside an inner class defined in a different method), mach ich das meckert er dass diese vielleicht niemals initialisiert wurde(The local variable jlPlayer may not have been initialized)...und jetzt? Weiss jemand Rat? Ich will doch nur dass der Player aufhoert zu spielen wenn sich das Fenster schliesst! Muss ich jetzt dafuer ne Extra Methode erschaffen und den Player uebergeben oder wie ???:L???:L???:L

Hier mal mein Code, Danke schon mal
Java:
private void playMP3()
         {
            
            Player jlPlayer ;
            
            this.setTitle(this.mediaFile.getName());
            this.setSize(100,400);
            
            
            try
               {
                  FileInputStream fis= new FileInputStream(mediaFile);
                  jlPlayer = new Player(fis);
                  jlPlayer.play();
               }
            catch (FileNotFoundException fnfe)
               {
                  System.out.println(fnfe.toString());
               }
            catch (JavaLayerException jle)
               {
                  System.out.println(jle.toString());
               }
            
            this.addWindowListener(new WindowAdapter()
               {
                  @Override
                  public void windowClosing(WindowEvent e)
                     {
                        jlPlayer.close();
                        dispose();
                     }
               });
            
            
            
         }
 
Er hätte die nicht lieber final, sondern sie muss final sein.

mach doch einfach sowas:
Java:
            try
               {
                  FileInputStream fis= new FileInputStream(mediaFile);
                  jlPlayer = new Player(fis);
                  jlPlayer.play();
               }
            catch (FileNotFoundException fnfe)
               {
                  System.out.println(fnfe.toString());
               }
            catch (JavaLayerException jle)
               {
                  System.out.println(jle.toString());
               }
            
            final Player player = jlPlayer;
            this.addWindowListener(new WindowAdapter()
               {
                  @Override
                  public void windowClosing(WindowEvent e)
                     {
                        player.close();
                        dispose();
                     }
               });
 
Die Variable als Feld der Klasse initialisieren.

Beispiel: (nicht an den publics und privates und co aufhängen, danke^^)

Java:
public class Test {

	private String string;
	
	private class Test1 {
		public void tuwas() {
			string = "";
		}
	}
}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben