变量名称等于字段名称
2022-09-02 04:32:28
在编译以下代码时发现了有趣的事情:
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”。所以,有两个问题:
- 我应该在Idea中提交错误报告吗?
- 为什么来自Java的错误消息是这样的?它不能检测到错误吗?什么机制在这里起作用?场变量的日食?