Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在执行java代码时省去一些System.out/logging语句? 在C++中,如果我们不希望某些语句编译成像AsStRead函数调用那样的代码,则我们可以通过“γIFNDEF预处理器指令”来控制它们的编译。_Java - Fatal编程技术网

如何在执行java代码时省去一些System.out/logging语句? 在C++中,如果我们不希望某些语句编译成像AsStRead函数调用那样的代码,则我们可以通过“γIFNDEF预处理器指令”来控制它们的编译。

如何在执行java代码时省去一些System.out/logging语句? 在C++中,如果我们不希望某些语句编译成像AsStRead函数调用那样的代码,则我们可以通过“γIFNDEF预处理器指令”来控制它们的编译。,java,Java,我们如何在Java中做到这一点 我有一些System.out.println()语句用于调试,我想在最后的代码中删除这些语句 一种方法是使它们在布尔变量的影响下有条件地执行。有更好的方法吗 由于我有一个java swing应用程序,所以可以关闭System.out.println语句,而不影响输出。执行此操作的方法是什么?使用类似的日志框架。您可以在调试时打印到控制台,并省略生产中的所有内容,而无需重新编译应用程序。使用类似的日志框架。您可以在调试时打印到控制台,并省略生产中的所有内容,而无需重

我们如何在Java中做到这一点

我有一些System.out.println()语句用于调试,我想在最后的代码中删除这些语句

一种方法是使它们在布尔变量的影响下有条件地执行。有更好的方法吗


由于我有一个java swing应用程序,所以可以关闭System.out.println语句,而不影响输出。执行此操作的方法是什么?

使用类似的日志框架。您可以在调试时打印到控制台,并省略生产中的所有内容,而无需重新编译应用程序。

使用类似的日志框架。您可以在调试时打印到控制台,并省略生产中的所有内容,而无需重新编译应用程序。

使用日志记录。请参阅log4j或commons日志

通常,每个日志条目都有一个严重级别(如调试、信息、警告、错误),您可以配置从应用程序打印的内容。您可以打印所有文件以进行调试,但在生产中只能打印部分文件(例如,信息和更高版本)。配置通常使用单个纯文本文件完成


日志框架可以做的不止这些:自动添加更多细节(例如时间戳或线程ID)、记录到控制台、文件和/或数据库、旋转文件等等。

使用日志记录。请参阅log4j或commons日志

通常,每个日志条目都有一个严重级别(如调试、信息、警告、错误),您可以配置从应用程序打印的内容。您可以打印所有文件以进行调试,但在生产中只能打印部分文件(例如,信息和更高版本)。配置通常使用单个纯文本文件完成

日志框架可以做的不止这些:自动添加更多细节(例如时间戳或线程ID)、登录控制台、文件和/或数据库、旋转文件、,等等。

用于那些您希望在编译时添加或删除的代码片段,当您不想使用它们时,可以不使用AspectJ进行编译。

用于那些您希望在编译时添加或删除的代码片段,当您不想使用它们时,可以不使用AspectJ进行编译。

一般来说(不仅仅针对您的示例),您可以创建接口的多个实现,并更改在执行期间使用的实例。这就是所谓的if/else,它比if/else的优点是:您选择实现一次,而不是每次使用它

在Java中,多态性不会导致性能开销

public interface MyInterface {
  void trashTheCPU();
}

public class MyRealImpl implements MyInterface {
  @Override
  public void trashTheCPU() {
    // actually trash the CPU with heavy tasks
  }
}

public class MyEmptyImpl implements MyInterface {
  @Override
  public void trashTheCPU() {
    // do nothing
  }
}

// ... somewhere else:

MyInterface mi = null;

public void initEveryting() {
  if(trashTheCPUconditionIsMet) {
    mi = new MyRealImpl();
  } else {
    mi = new MyEmptyImpl();
  }
}
通常(不仅仅是您的示例),您可以创建接口的多个实现,并更改执行期间使用的实例。这就是所谓的if/else,它比if/else的优点是:您选择实现一次,而不是每次使用它

在Java中,多态性不会导致性能开销

public interface MyInterface {
  void trashTheCPU();
}

public class MyRealImpl implements MyInterface {
  @Override
  public void trashTheCPU() {
    // actually trash the CPU with heavy tasks
  }
}

public class MyEmptyImpl implements MyInterface {
  @Override
  public void trashTheCPU() {
    // do nothing
  }
}

// ... somewhere else:

MyInterface mi = null;

public void initEveryting() {
  if(trashTheCPUconditionIsMet) {
    mi = new MyRealImpl();
  } else {
    mi = new MyEmptyImpl();
  }
}

对于你正在做的事情,断言可能是最好的选择。
assert
关键字是在1.4版中添加到Java中的,在概念上与您熟悉的C++的
assert()
类似

Java中的
assert
语句如果计算结果为true,则不会执行任何操作,否则会对您大喊大叫,这非常适合调试。默认情况下它们也不工作,这意味着编译器将忽略它们,除非您明确告诉它不要这样做。最终的结果是一个调试工具,当您发布生产代码时,它会“蒸发”


以下是。

对于您正在做的事情,断言可能是一种方法。
assert
关键字是在1.4版中添加到Java中的,在概念上与您熟悉的C++的
assert()
类似

Java中的
assert
语句如果计算结果为true,则不会执行任何操作,否则会对您大喊大叫,这非常适合调试。默认情况下它们也不工作,这意味着编译器将忽略它们,除非您明确告诉它不要这样做。最终的结果是一个调试工具,当您发布生产代码时,它会“蒸发”


这是。

实际上,没有必要重新编译。谢谢;那是个打字错误。我写了“带重新编译”,这根本没有意义。实际上,重新编译是没有必要的。谢谢;那是个打字错误。我写了“带重新编译”,这根本没有意义。你应该用Log4j这样的日志来打印调试信息。这样就可以很容易地关闭它们或更改日志记录级别。这样就可以很容易地关闭它们或更改日志记录级别。Java断言是无用的,正是因为它们在默认情况下被禁用了——它们应该在生产环境中被有意禁用,而不是相反。此外,它们可能会在不理解它们的人手中执行副作用语句——因此,如果它们被打开或关闭,代码将无法正常运行。日志框架是一个更好的解决方案。Java断言是无用的,正是因为它们在默认情况下被禁用——它们应该在生产环境中被有意禁用,而不是相反。此外,它们可能会在不理解它们的人手中执行副作用语句——因此,如果它们被打开或关闭,代码将无法正常运行。日志框架是一个更好的解决方案。