为何Eclipse报类型不匹配错误而IntelliJ无报错?
问题:IntelliJ无报错但Eclipse提示类型不匹配错误
我日常使用IntelliJ开发,近期队友用Eclipse打开项目时,发现两个Java文件出现错误提示:Type mismatch: cannot convert from Object to boolean,但我在IntelliJ中检查却无任何报错。
IDE报错情况对比
- Eclipse:代码中
if(row.getValue())位置显示类型不匹配错误,提示无法从Object转换为boolean - IntelliJ:相同代码无错误提示
编译器合规级别确认
两款IDE的编译器合规级别均已设置为11:
- Eclipse:编译器合规级别配置为11
- IntelliJ:项目SDK及语言级别均为11
尽管Eclipse报错,但项目在Eclipse中可成功构建并运行。
由于实际代码中row对象由接口创建,无法查看其具体实现,因此编写以下复现代码探究两款IDE的差异:
复现代码
IRow.java
public interface IRow { <T> T getValue(); }
RowImpl.java
public class RowImpl implements IRow { @SuppressWarnings("unchecked") @Override public <T> T getValue() { return (T) Boolean.TRUE; } }
main.java
public class main { public static void main(String args[]) { IRow row = new RowImpl(); if(row.getValue()) // --> Eclipse显示错误但IntelliJ无报错 System.out.println("value is true"); } }
内容的提问来源于stack exchange,提问作者Amogh
相关产品推荐
相关产品推荐

