gpt4 book ai didi

java - Java 中没有预处理器——如果我有条件地喜欢详细的调试输出,最好的方法是什么?

转载 作者:行者123 更新时间:2023-11-29 03:26:41 25 4
gpt4 key购买 nike

因此,在像 C 和 C++ 这样的语言中,我可以定义一个预处理器指令并像这样进行条件编译:

#define DEBUG 1


#ifdef DEBUG
cout << "Some Stuff, blah blah blah" << endl;
#endif

我的目标是在 Java 中做一些类似或大致类似的事情,这样我就可以进行一些调试,只需快速打开或关闭 DEBUG 即可进行调试或发布编译。在java中有什么接近这个的东西吗?也许是一个

public static final String DEBUG = "YES"

我不知道....是否有任何接近于此的东西,我的最佳策略是什么。建议?

编辑:我希望避免使用任何自定义库,因为我是强制症......大声笑

最佳答案

Java 在这种情况下非常灵活,而且有许多自定义库可以让您做到这一点 (log4j)。

因为你不想使用它们中的任何一个,但仍然允许你在不重新编译代码的情况下灵活地使用它,

  1. 定义一个属性文件(比如 custom.properties)

enabledebug=true

  1. 定义一个全局属性

     class Global {

    public static boolean DEBUGFLAG=false;
    }
  2. 定义一个方法来读取属性和标志值到全局变量

    public void load() {
    Properties props = new Properties();
    FileInputStream fis = new FileInputStream("....custom.properties")
    props.load(fis);
    Global.DEBUGFLAG= Boolean.valueOf(props.get("enabledebug"));
    }
  3. 从main方法调用load方法

  4. 当你需要打印冗长的时候使用这个标志

    if(Global.DEBUGFLAG) {

    //print some thing
    }

关于java - Java 中没有预处理器——如果我有条件地喜欢详细的调试输出,最好的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20686527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com