Боюсь, что в Eclipse невозможно автоматически получить подсветку для «измененных» читателей.Подсветка зарезервирована для изменений самих переменных.В случае объектов «изменение» означает, что они будут указывать на другой объект, а это не так: все ваши переменные продолжают ссылаться на одни и те же экземпляры BufferedReader.Спуск по дереву классов в конечном итоге приведет вас к информации, к которой вы стремитесь, но делать это для более чем одной переменной одновременно довольно болезненно.
Если фактическое число читателей, за которыми вы должны следить,не слишком большой, вам может помочь следующее: вы можете создать подкласс BufferedReader и переопределить toString (), чтобы он выводил полезную для вас информацию.Таким образом, вы видите эту информацию всякий раз, когда нажимаете на фактическую переменную на вкладке «Переменные», или когда вы используете клавиши со стрелками, чтобы выделить ее.Не так хорошо, как автоматическое выделение Eclipse, но, возможно, достаточно хорошо?
Вот простой пример.Поместите точку останова в строку «System.out.println (in.read ())» и посмотрите на переменную «in» в отладчике.В первый раз вы увидите «доступно: 34».В следующих случаях вы увидите «available: 0», потому что BufferedReader уже полностью прочитал входной поток, и все последующие чтения будут происходить из буфера BufferedReader.
public class InputStreamDebugTest {
public static class MyReader extends BufferedReader {
private final InputStream in;
public MyReader(InputStream in) {
super(new InputStreamReader(in));
this.in = in;
}
@Override
public String toString() {
try {
return "available: " + in.available();
} catch (IOException e) {
return "Exception: " + e.getMessage();
}
}
}
public static void main(String[] args) throws IOException {
MyReader in = new MyReader(new ByteArrayInputStream("Just some minor text for debugging".getBytes()));
while (true) {
System.out.println(in.read());
}
}
}