Раньше у меня была проблема, когда внутренний анонимный класс не видел поля «внешнего» класса.Мне нужно было сделать окончательную переменную, чтобы сделать ее видимой для внутреннего класса.Теперь у меня противоположная ситуация.Во "внешнем" классе "ClientListener" я использую внутренний класс "Thread" и класс "Thread", у меня есть метод "run", и он действительно видит "earPort" из "внешнего" класса!Почему?
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();
}
}