Auparavant, j'avais un problème lorsqu'une classe anonyme interne ne voyait pas de champ de la classe "externe". J'avais besoin de faire une dernière variable pour la rendre visible à la classe interne. Maintenant, j'ai une situation opposée. Dans la classe "externe" "ClientListener" j'utilise une classe interne "Thread" et la classe "Thread" j'ai la méthode "run" et je vois le "earPort" de la classe "outer"! Pourquoi?Pourquoi ma classe interne voit-elle une variable NON statique?
import java.io.IOException;
import java.net.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class ClientsListener {
private int earPort;
// Constructor.
public ClientsListener(int earPort) {
this.earPort = earPort;
}
public void starListening() {
Thread inputStreamsGenerator = new Thread() {
public void run() {
System.out.println(earPort);
try {
System.out.println(earPort);
ServerSocket listeningSocket = new ServerSocket(earPort);
Socket serverSideSocket = listeningSocket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(serverSideSocket.getInputStream()));
} catch (IOException e) {
System.out.println("");
}
}
};
inputStreamsGenerator.start();
}
}
Je aime cette fonctionnalité de Java. – CiscoIPPhone