【问题标题】:IntelliJ code for specific project [duplicate]特定项目的 IntelliJ 代码 [重复]
【发布时间】:2015-11-21 01:36:12
【问题描述】:

我正在使用 Java 在 IntelliJ IDEA 中编写一个跨平台游戏,但我遇到了一种情况,我似乎找不到 Visual Studio 具有的此功能:

这个特性允许我有一个条件,(2行代码),例如#if keyword1/#endif,而这两行之间的代码,只有在当前项目将keyword1声明为@时才编译987654325@通过项目设置。

IntelliJ IDEA 有类似的功能吗?

【问题讨论】:

  • 两件事:1 - 这不是重复的(这个问题询问 IntelliJ 是否有像 Visual Studio 这样的“条件包含”,它不问是否可以在 Java 中进行条件编译)。 2 - 不,IntelliJ 没有这样的功能,它会生成非常依赖于 IDE 的代码,这与 Java 的理念相反。
  • @morgano 我想是这样,谢谢你的评论。

标签: java intellij-idea


【解决方案1】:

这是一个预处理器符号,与 IDE 无关。在java中有一些解决方法。例如,您可以使用如下内容:

public static final boolean DEBUG = false;

public void someMethod(){
    if(DEBUG)
        dosomething();
    else
        dosomethingElse();
}

大多数预编译器会对此进行优化,以使结果不包含 if-else 语句,并将其简化为对 dosomethingElse 的简单调用。但是没有像 c++ for java 这样的预处理器/预编译器语句。

【讨论】:

  • VS 功能完全依赖于 IDE。您的建议与 Visual Studio 的功能有很大不同。例如,如果我想拥有 2 个不同的函数或类或变量,名称相同,一个用于 android,一个用于桌面。代码被编译器忽略,就像注释一样,如果它在#if keyword/#endif 中并且您的项目不包含keyword 作为编译符号。
  • #if 是一个预处理器语句,它依赖于语言。 VS 只提供了一个 UI 来简化这种行为。正如我在回答中所说,java 不提供预处理器语句,这只是一种解决方法,很可能会导致相同的行为。
  • 哦,我曾经听有人说#if/#endif 依赖于VS,但我猜他们错了。但是,即使 java 不支持此功能作为一种语言,我也看不到 IntelliJ IDEA 中没有添加此功能,以便在内部工作,只能在 IDE 内部工作。我想还有其他并发症吗?嗯......不过,你的答案似乎是准确的。谢谢。
  • 实际上有java的预处理器,但这不是java的默认特性,到目前为止还没有用于intellij的插件。虽然它会非常有用。如果你想要一种纯 Java 方法,我在答案中展示的方式是唯一的
猜你喜欢
  • 2018-11-14
  • 2022-01-14
  • 1970-01-01
  • 2014-03-19
  • 2023-03-12
  • 2019-09-28
  • 1970-01-01
  • 2016-10-22
  • 1970-01-01
相关资源
最近更新 更多