Java Konstante Ausdrücke und Code -EliminierungJava

Java-Forum
Anonymous
 Java Konstante Ausdrücke und Code -Eliminierung

Post by Anonymous »

Wie hier beschrieben Wie wird dies beeinflusst, wenn mein Code einen konstanten Ausdruck verwendet, der von anderen in verschiedenen Paketen definierten konstanten Ausdrücke abhängt? angegebene Pakete: < /p>

Code: Select all

package foo;

public class Foo {
public static final boolean CONDITION = false;
}
< /code>

und < /p>

package bar;

import foo.Foo;

public class Bar {
public void test() {
if (Foo.CONDITION) {
System.out.println("This line of code could be eliminated.");
} else {
System.out.println("This line of code will be executed.");
}
}
}
< /code>

Eindeutig, wenn der Foo < /code> -Package zur Laufzeit von einem externen Jar-File geladen wird, kann der Compiler technisch gesehen nicht nur davon ausgehen, dass FOO. Bedingung 
ist falsch und sollte die wahre -branch der if -statement nicht beseitigen. /Code> und Bar befanden sich tatsächlich im selben Paket, das wahre -Branch sollte definitiv beseitigt werden (wenn der Compiler überhaupt die Code-Eliminierung unterstützt).

Nicht ganz sicher, wie man diese Frage am besten ausdrückt, aber: Wie "schließen" ist, muss Foo sein, um zu balken, damit auch ein konstanter Ausdruck in Foo als konstant angesehen werden kann in Bar ? Müssten sie in derselben Datei sein? Das gleiche Paket? Das gleiche Jar-File? Oder ist es überhaupt keine Rolle (d. H. Würde der Compiler Foo.Condition als konstant betrachten und den Wert verwenden, der während der Kompilierungszeit im Build-Weg gefunden wurde)?>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post