我正在学习通过在Preferences > Java > Compiler > Errors/Warnings
中启用基于注释的空分析在我的项目中使用Eclipse的Null Analysis,但是在执行以下操作时遇到了一个奇怪的错误。
1)创建2个接口:
public interface Book {}
和
import org.eclipse.jdt.annotation.NonNull;
public interface BookService {
public @NonNull Book getBook(Long id);
}
2)创建2个实现上述接口的类:
public class BookImpl implements Book {}
和
import org.eclipse.jdt.annotation.NonNull;
public class BookServiceImpl implements BookService {
@Override
public @NonNull Book getBook(Long id) {
return new BookImpl(); //error "Type mismatch: cannot convert from BookImpl to Book"
}
}
在return new BookImpl();
的语句Type mismatch: cannot convert from BookImpl to Book
上发生错误。
此错误的原因是什么以及如何解决?
其他详细信息
我为Web开发人员使用Java 8和Eclipse Java EE IDE,版本:Kepler Service Release 2.
更新
我尝试过eclipse Luna M7 Release(4.4.0M7)并且没有出现错误。
问题可能是因为eclipse的错误,并且似乎在@ user3580294在下面的评论中提到的新版本中修复了。