0

我是 Android 和 Java 的新手——在 C/C++/C# 方面有很多经验。

我的界面看起来像这样:

class WellNamedClass {
    void greatMethodToCallWhenever() { /*...*/ }

    void debugOnlyMethod() { /*...*/ }
}

在上面提到的语言中,我要么 #ifdef 整个 debugOnlyMethod 方法,要么 #ifdef 实现,所以它什么都不做,但 Java 没有预处理器。

我对在那里有代码并在运行时检查我们是否处于调试版本中感到非常满意,但我什至找不到这样做的方法。

我发现了类似这样的建议,您可以在其中创建一个带有常量的类,该常量指示是否启用了调试(或您想要的任何其他内容)。这可能有效,但是您必须手动更改代码才能获得调试版本和发布版本。

有没有其他人解决过这个问题?谢谢。

4

3 回答 3

0

这可能有效,但是您必须手动更改代码才能获得调试版本和发布版本。

一种流行的方法是使用-D标志将系统属性传递给 VM。然后,您可以直接使用或从该属性System.getProperty初始化 a 。static field

System.getenv也将工作。

于 2012-05-17T20:56:54.953 回答
0

我不知道你为什么需要这个,顺便说一句,你可以放一个静态全局变量,像这样:

class WellNamedClass{

public static final boolean DEBUG = true;
...
}

并使用 if 语句检查您的调试方法,例如:

if(WellNamedClass.DEBUG){
    debugOnlyMethod();
}

从java开始,你可以玩这个。

当您获得更多经验时,您可以尝试注解、aop 或任何其他高级编程技术。

于 2012-05-17T20:53:04.943 回答
0

我认为我们将要使用的方法是对我们的本机组件进行 JNI 调用,它会告诉我们是否在调试模式下运行。无论如何,我们必须拥有本机组件,并且会在启动时进行一些 JNI 调用,因此这是一个相对简单的解决方案,因为 C++ 有一个预处理器。

于 2012-05-26T04:05:54.233 回答