IntelliJ似乎认为我的代码有一个潜在的错误,我不太明白为什么。这与Nonnull
注释有关;我告诉IntelliJ,有些字段不能为空,我确保它们永远不被允许为空,但是IntelliJ仍然不喜欢它。
下面是一个有问题的代码示例。
import javax.annotation.Nonnull;
public class Something {
static final Long DEFAULT_ID = -1L;
@Nonnull
public Long id;
public Something() {
id = DEFAULT_ID;
}
@Nonnull
public Long getId() {
return this.id;
}
public Something setId(Long id) {
this.id = id != null ? id : DEFAULT_ID;
return this;
}
}
当我这样做时,IntelliJ的检查员会在setId(Long)方法原型的id
参数上生成一个警告,警告我id
的类字段用Nonnull
注释。这是在尽管我手动检查null在身体的方法
但是,如果我将方法更改为这样,检查警告将完全消失:
public Something setId(Long id) {
if (id != null)
this.id = id;
else
this.id = DEFAULT_ID;
return this;
}
理论上,这两种实现实际上是相同的;事实上,IntelliJ建议在我使用if-ther方法时使用三元运算符,以达到文体目的。为什么IntelliJ会在第一个实现(使用三元操作符)上产生警告,而不是第二个?这只是代码检查器中的一个疏忽,还是我错过了一些重要的东西?可以通过抑制“Nullable问题”来抑制警告,但是我想确保在这里使用三元运算符没有问题。有什么建议吗?
错误:无法找到或加载主类MyGridLayout.MyGridLayout C:\users\home\AppData\local\netbeans\cache\8.2\executor-snippets\run.xml:53:Java返回:1构建失败(总时间:0秒)
我尝试使用C类继承来解决违反Liskov替换原则的问题,但无法复制与Java程序演示的LSP冲突相同的问题。Java程序的源代码可以在这个页面上找到。违规会导致页面上描述的错误。下面是我用C语言翻译的代码: 答案是矩形类预期的50。我对Java的翻译是错误的还是这与Java和C实现类的区别有关?我的问题是: 是什么导致了这种行为差异(在引擎盖下/我的代码问题)? LSP违规的Java示例可以在C中
我在中使用带有4.1版本模拟器的android最新版本sdk。一切都很好。但是在我的中,对于任何应用程序的每次运行,我都会得到以下语句。 即使在Hello world应用程序中,我也得到相同的logcat输出。我没有在我的应用程序中使用多线程。有人能告诉我为什么在我的logcat中得到这些日志。 这是我的密码 在我的异步任务中,我从服务器获取JSONArray,解析它并列出。
我正在研究从EclipseScalaIDE切换到Intellij15Scala插件。 我可以在Messages工具中看到编译错误的报告,但在项目树中看不到任何包含错误的源文件的突出显示。 这个功能不可用吗?如果没有,你如何应对?我是不是被日食宠坏了,应该学会“忍受”呢? 更新此问题不同于IntelliJ-显示错误的位置,因为: 这个问题与文件夹/文件树视图中文件的视觉指示器有关
从云端仓库拉下来的自己的项目会在根目录下新建一个名称为 "项目名.iml" (这个文件是干嘛的) 的文件,我在文件 ".gitignore" 中设置排除文件 "项目名.iml" 后使用命令 git status 仍然显示有这个文件,我要如何设置可以忽略掉文件 "项目名.iml" 不提交,不推送到云端仓库?
我在IntelliJ IDEA2020.1.2(终极版)中打开一个spring boot项目,并在实体中打开许多错误突出显示,例如: 无法解析表“角色” 类“RolesEntity”应具有[public,protected]无arg构造函数 无法解析表“user_roles” 但是当我在IntelliJ IDEA2019.3.3(社区版)这样的旧版本中打开我的项目时,我就看不出这个问题了。 Int