Вот wget сценарий в Python:
# From python cookbook, 2nd edition, page 487
import sys, urllib
def reporthook(a, b, c):
print "% 3.1f%% of %d bytes\r" % (min(100, float(a * b) / c * 100), c),
for url in sys.argv[1:]:
i = url.rfind("/")
file = url[i+1:]
print url, "->", file
urllib.urlretrieve(url, file, reporthook)
print
Большинство компиляторов исключают этот оператор. Например:
public class Test {
private static final boolean DEBUG = false;
public static void main(String... args) {
if (DEBUG) {
System.out.println("Here I am");
}
}
}
После компиляции этого класса я затем распечатываю список созданных инструкций с помощью команды javap
:
javap -c Test Compiled from "Test.java" public class Test extends java.lang.Object{ public Test(); Code: 0: aload_0 1: invokespecial #1; //Method java/lang/Object."":()V 4: return public static void main(java.lang.String[]); Code: 0: return }
Как видите, нет System.out.println
! :)
Да, компилятор Java удалит скомпилированный код из блоков if
, которые управляются константами. Это приемлемый способ условной компиляции «отладочного» кода, который вы не хотите включать в производственную сборку.