2012-12-13 5 views
6

Es scheint mir sinnvoll, dass der Compiler so etwas nehmen wird:Java Compiler String Optimierung

log.info("A really long logger message that is kind of a pain in the tucous " + 
    "and violates formatting standards by making the line to long"); 

und kompilieren die beiden Strings in einem. Ich bin mir ziemlich sicher, dass dies wahr ist, aber ich würde mag meine Enten in einer Reihe haben, wenn jemand es bringt.

Antwort

3

Um zu überprüfen, ob das, was sagt JLS über konstante Ausdrücke wahr ich diesen Code erfüllt, Test.java

public static void main(String[] args) { 
    log.warning("123" + "456"); 
} 

dann decompile Test.class mit Jad und bekam dieses

public static void main(String args[]) 
{ 
    log.warning("123456"); 
} 

das heißt, in Test.class gibt es nur eine wörtliche „123456“

7

Strings durch konstante Ausdrücke berechnet (§15.28) bei Kompilierung berechnet werden und dann behandelt, als ob sie Literale waren.

anzeigen, die von den JLS jedem zitieren, ‚Herausforderungen‘ Sie.