On Thu, 19 Jul 2001 21:30:33 +0200, Tim <tlm@get2net.dk> wrote:
>Hej gruppe. Et spørgsmål... Hvis nu man har nogle kode-fragmenter som
>man kun ønsker at inkludere i compileringen ved specielle situationer
>(f.eks. test) hvordan gør man så dette. I C/C++ er det meget nemt. Der
>kan man bruge #ifdef med tilhør:
>#ifdef __UNITTEST
>void SetupTC17() {
>...
>}
>#endif
>
>Findes der ikke noget tilsvarende til Java?
Precompilere er noget uhyggeligt noget, og der er en helt klar årsag
til at man har valgt ikke at have sådan noget snask i Java
Hoved årsagen er at precomileren ændrer på det program man har lavet -
og det i en alvorlig grad endda (f.eks. ændrer typer).
Nuvel, Til lige præcis dit problem, så kan det faktis løses i java.
Du skal bare et eller andet sted lave en final boolean variabel:
class Test{
public final static boolean test = true;
}
class X{:
:
:
if( Test.test ){
System.out.println( "plonk" );
}
:
:
}
Nu er det sådan at kompilere er så smarte at når din test variable er
final, så bliver den aldrig ændret, og når den så har værdien false,
ja så kan compileren finde ud af at den kodestump aldrig vil blive
afviklet, og så bliver den simpelthen optimeret væk.
Kan man ikke lide at det ligefrem bliver kompileret væk, så gør
følgende:
class Test{
private static boolean test = true;
public static boolean isTest(){
return test;
}
}
class X{:
:
:
if( Test.isTest() ){
System.out.println( "plonk" );
}
:
:
}
Det kan så godt være at din test kode kommer med, men gør det noget?
Det kunne jo være at det var debug istedet, og så kan man runtime slå
debug messages til/fra
>/Tim
vh. ld