【问题标题】:Is there a Java compiler option to allow if(object)?是否有允许 if(object) 的 Java 编译器选项?
【发布时间】:2015-05-28 15:41:09
【问题描述】:

我希望能够输入如下内容:

if (object) {
    // some code...
}

并让编译器将其视为:

if (object != null) {
    // some code...
}

有什么办法可以做到吗?

或者:有什么可以在 Eclipse 或 IntelliJ 中完成的事情吗?

【问题讨论】:

  • 另外:在 Eclipse 或 IntelliJ 中有什么可以做到的吗?
  • 这应该可以作为快捷方式,比如soutfori等等。
  • @BenC.R.Leggiero 只是好奇你为什么要做这样的事情?
  • 在 Intellij 中,您可以创建一个实时模板,它是 sout 之类的 IntelliJ 名称。
  • 当整个团队都使用它时,这将非常有趣,并且您的 IDE 会默默地将 Boolean b; if (b) { } 替换为 Boolean b; if (b != null) { }(是的,不能完全与 LiveTemplates 一起使用,但仍然如此)跨度>

标签: java compiler-options


【解决方案1】:

您无法设置任何编译器设置来获得此行为。我不认为您可以使用代码生成器(类似于Lombok)真正优雅地做到这一点,因为您不能真正注释语句。

另一种方法是将 IntelliJ Live Templates 用于 if (args != null)if (args == null)

  • ifn 扩展为 if (args == null)
  • inn 扩展为 if (args != null)

【讨论】:

  • 我相信你没有抓住重点。 OP 不是在寻找 IDE 快捷方式,而是在寻找允许 if(object) 对象不是布尔值的编译器选项
  • @ChetanKinger 虽然你只看问题是对的,但不要忽视我的cmets?
  • @BenC.R.Leggiero:请不要将问题的重要部分留在 cmets 中。他们更难看到。
  • @MichaelMyers 我通常不这样做,但自从在问题中包含一些元信息并被告知将其留在评论中之后,我一直试图找到这条线。
  • @BenC.R.Leggiero:我明白了。一个好的经验法则是,如果没有评论就无法理解问题(在这种情况下,它会影响答案),那么评论应该是问题的一部分。
【解决方案2】:

在 IntelliJ 中按 ctrl + j,然后输入:inn - 然后瞧:

if (args != null) {

}

顺便说一句。这称为live template

【讨论】:

  • 我相信你没有抓住重点。 OP 不是在寻找 IDE 快捷方式,而是在寻找允许 if(object) 的编译器选项,其中对象不是 boolean
  • 我没有错过重点。这是作者在第一条评论中指定的替代方案 - “或者:有什么可以在 Eclipse 或 IntelliJ 中完成的事情吗? - ”
  • 我的错。我已编辑问题并将评论添加为问题的一部分以避免混淆。
猜你喜欢
  • 2013-11-12
  • 2021-03-19
  • 2022-01-14
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多