Eclipse Oxygen.2(4.7.2) Lambda带参数类型时自动补全失效求助
关于Eclipse Oxygen.2中Lambda显式参数类型导致自动补全失效的问题
这确实是Eclipse Oxygen.2 (4.7.2)版本里存在的已知问题,算不上会阻断开发的严重Bug,但确实挺影响开发流畅度的。
问题原因
Eclipse在这个版本里处理显式类型的Lambda参数时,类型推断的逻辑有缺陷:
- 当你不指定Lambda参数类型时,IDE能通过上下文(比如函数式接口的定义)自动推断出参数类型,自动补全功能可以基于这个推断出的类型正常加载类的方法、属性等建议;
- 但一旦你显式指定了参数类型,旧版本的Eclipse在解析这个显式类型、关联后续代码补全的过程中出现了逻辑错误,导致无法正确生成补全选项。
不过你提到手动编写代码能正常运行,这是因为Java语言本身完全支持显式类型的Lambda参数,只是IDE的自动补全模块出了问题,和编译器的语法校验无关。
解决办法
- 优先升级Eclipse版本:这个问题在Oxygen系列的后续小版本(比如Oxygen.3)以及之后的正式版本(比如2018-09及更新版本)中已经被官方修复了,升级后就能恢复正常的自动补全功能;
- 临时 workaround:如果暂时没法升级,可以先不写参数类型,利用自动补全写完代码后再手动补上参数类型;或者尝试使用快捷键
Ctrl+Shift+O(组织导入),有时候能触发IDE重新识别类型,恢复部分补全能力。
内容的提问来源于stack exchange,提问作者pL4Gu33
相关产品推荐
相关产品推荐

