即使方法未解析,IDE也不会在Java编译单元中显示错误

时间:2016-07-17 08:24:49

标签: java android intellij-idea reflection

我正在浏览一段代码(android.app.Activity.java),我发现了一个方法调用,

   public void invalidateOptionsMenu(){
    if (mWindow.hasFeature(Window.FEATURE_OPTIONS_PANEL) &&
                (mActionBar == null || !mActionBar.invalidateOptionsMenu())) {
            mWindow.invalidatePanelMenu(Window.FEATURE_OPTIONS_PANEL);
        }
    }

现在,这不是一个专门针对Android的问题,而是一个与Java和IDE相关的问题。 我正在使用Android Studio,它以红色显示此方法调用,并显示消息“无法解析方法invalidateOptionsMenu()”但总体而言,解析和编译Activity.java时没有错误。

不仅是这种方法,还有其他方法尚未解决。我查看了mActionBar的类型,它是ActionBar。我去了ActionBar.invalidateOptionsMenu()并且方法存在。

首先,为什么即使存在未解析的方法调用,编译单元也能够被解析然后编译。 其次,即使该方法存在(并且不应该显示未解决),IDE的这种行为应该如何解释为?

1 个答案:

答案 0 :(得分:0)

在IntelliJ IDEA中,有一个选项可以使缓存无效并重新启动:

  

档案>无效缓存/重新启动>无效并重新启动

如果你正在使用maven,你也应该重新导入你的依赖:

  

打开“Maven项目”标签/窗口>重新进口所有Maven项目