Обнаружил интересную вещь при компиляции следующего фрагмента кода:
1 class A {
2
3 private B line;
4
5 public void foo() {
6 for (Integer line : line.getElements()) {
7
8 }
9 }
10 }
11
12 class B {
13
14 List<Integer> getElements() {
15 return null; // doesn't matter
16 }
17 }
Обратите внимание на строку 6: мы видим, что имя переменной совпадает с именем поля. IntelliJ Idea 11 игнорирует это и думает, что здесь нет никаких проблем. Но компилятор java сообщает мне, что «строка не имеет метода getElements». Итак, два вопроса: