**用import改变行为**
Java没有C的条件编译功能,该功能可以使你不必更改任何程序代码,就能够切换开关并产生不同的行为。Java去掉此功能可能是因为C在绝大数情况下是用此功能来解决跨平台的问题的,即程序代码的不同部分是根据不同的平台来编译的。由于Java本身可以自动跨越不同的平台,因此这个功能对Java而言就没有必要了。
然而,条件编译还有其他一些有价值的用途。调试就是一个很常见的用途。调试功能在开发过程中是开启的,而在发布的产品中是禁用的。可以通过修改被导入的package的方法来实现这一目的,修改的方法是**将你程序中的代码从调试版改为发布版**。这样的技术适用于任何种类的条件代码。
例子:创建两个包:debug和debugoff,它们都包含一个相同的类,该类有一个debug()方法。第一个版本显示发给控制台的String参数,而第二个版本什么也不做。使用静态import语句将该类导入到一个测试程序中,并示范条件编译效果!
package access.debug;
public class Debug {
public static void debug(String s){
System.out.println(s);
}
}
package access.debugoff;
public class Debug {
public static void debug(){
}
}
package access.testdebug;
import static access.debug.Debug.*;
import static access.debugoff.Debug.*;
public class testdebug {
public static void main(String[] args) {
debug("aaaa");
debug();
}
}