Java中利用package机制实现条件编译
2014-10-12 13:35
393 查看
Java中并没有C语言里的“条件编译”特性。这种特性在C语言里是用来解决代码的跨平台问题的,可以通过让代码的不同部分根据其运行的具体平台进行编译。由于Java本身就设计为一种跨平台的语言,因此这种特性就没有存在的必要了。
但是条件编译对于代码的调试来说还是很有用处的。就像我们在C语言中学到的一样,可以通过一些条件编译的开关来使得一些调试代码只在开发过程中使用,而在发布的版本中则不会编译进去。
我们可以利用Java的package来模仿条件编译的概念,从而可以用于java代码的调试开发。
代码如下所示:
代码
package com.vista.debug
publicclass Assert
{
privatestaticvoid printErr(String msg)
{
System.err.println(msg);
}
publicfinalstaticvoid isTrue(boolean
exp)
{
if (!exp) printErr("Assertion failed");
}
publicfinalstaticvoid isFalse(boolean
exp)
{
if (exp) printErr("Assertion failed");
}
publicfinalstaticvoid isTrue(boolean
exp,String msg)
{
if (!exp) printErr("Assertion failed"+
msg);
}
publicfinalstaticvoid isFalse(boolean
exp,String msg)
{
if (!exp) printErr("Assertion failed"+
msg);
}
}
如果想在我们的代码中使用这个断言类进行调试,只需要引入下述package:
import com.vista.debug.*;
当我们准备编译发行版本时就需要清除掉原来引入的断言机制,为此我们只需要在了一个不同的package中创建一个同样名为Assert的类,代码如下:
代码
package com.vista.release
publicclass Assert
{
privatestaticvoid printErr(String msg){}
publicfinalstaticvoid isTrue(boolean
exp){}
publicfinalstaticvoid isFalse(boolean
exp){}
publicfinalstaticvoid isTrue(boolean
exp,String msg){}
publicfinalstaticvoid isFalse(boolean
exp,String msg){}
}
再将前面的import语句修改如下:
import com.vista.release.*;
这样断言机制就从我们的代码中去除掉了。
但是条件编译对于代码的调试来说还是很有用处的。就像我们在C语言中学到的一样,可以通过一些条件编译的开关来使得一些调试代码只在开发过程中使用,而在发布的版本中则不会编译进去。
我们可以利用Java的package来模仿条件编译的概念,从而可以用于java代码的调试开发。
代码如下所示:
代码
package com.vista.debug
publicclass Assert
{
privatestaticvoid printErr(String msg)
{
System.err.println(msg);
}
publicfinalstaticvoid isTrue(boolean
exp)
{
if (!exp) printErr("Assertion failed");
}
publicfinalstaticvoid isFalse(boolean
exp)
{
if (exp) printErr("Assertion failed");
}
publicfinalstaticvoid isTrue(boolean
exp,String msg)
{
if (!exp) printErr("Assertion failed"+
msg);
}
publicfinalstaticvoid isFalse(boolean
exp,String msg)
{
if (!exp) printErr("Assertion failed"+
msg);
}
}
如果想在我们的代码中使用这个断言类进行调试,只需要引入下述package:
import com.vista.debug.*;
当我们准备编译发行版本时就需要清除掉原来引入的断言机制,为此我们只需要在了一个不同的package中创建一个同样名为Assert的类,代码如下:
代码
package com.vista.release
publicclass Assert
{
privatestaticvoid printErr(String msg){}
publicfinalstaticvoid isTrue(boolean
exp){}
publicfinalstaticvoid isFalse(boolean
exp){}
publicfinalstaticvoid isTrue(boolean
exp,String msg){}
publicfinalstaticvoid isFalse(boolean
exp,String msg){}
}
再将前面的import语句修改如下:
import com.vista.release.*;
这样断言机制就从我们的代码中去除掉了。
相关文章推荐
- Java中利用package机制实现条件编译
- Java中利用package机制实现条件编译
- Java中利用package机制实现条件编译
- Java中利用package机制实现条件编译
- 在java中利用动态编译实现eval
- [JAVA语言学习][小技巧]利用Batch批处理脚本实现控制台快速编译执行JAVA程序
- 利用反射函数实现一键清除缓存,并获取清除的缓存数目。调用反射函数类出错java.lang.NoSuchMethodException: getPackageSizeInfo.
- 利用java内存映射文件机制实现CRC循环冗余校验
- Java如何实现条件编译
- 利用Java的反射与代理机制实现IOC
- 利用Java事件处理机制实现录制、回放功能
- java利用反射实现Object-c中的KVC机制
- 利用Java的反射与代理机制实现IOC
- 利用Java的反射与代理机制实现AOP
- 利用Java事件处理机制实现录制、回放功能
- 在java中利用动态编译实现eval
- JAVA中实现条件编译
- 利用条件编译实现工程定制版本的自动输出
- 利用Java事件处理机制实现录制、回放功能
- 利用Java的反射与代理机制实现AOP