【发布时间】:2012-02-21 12:56:31
【问题描述】:
在编译以下代码时发现了有趣的东西:
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 的错误消息是这样的?它不能检测错误吗?什么机制在这里起作用?场变量的食相?
【问题讨论】:
-
IntelliJ Idea 的行为应该与 javac 编译器一致。
标签: java foreach intellij-idea