Compiler-Fehler Konstanten entfernen während des Kompiliervorgangs

Neumi5694

Top Contributor
Hallo, kurze Frage. Der Lesbarkeit halber deklariere und initialisiere ich des Öfteren Konstanten innerhalb einer Methode.
Z.B.
Java:
private void exampleMethod(double parameter1, double parameter2) {
  final double extensionLength = 2.5;
  doSomethingUsefulWith (parameter1 * extensionLength);
  doSomethingUsefulWith (parameter2 * extensionLength);
}

Der Compiler fügt an den Stellen, wo extensionLength verwendet wird, einfach den Wert ein, das ist zu erwarten und auch so beabsichtigt.

Nur ... die Variable extensionLength existiert weiterhin!
Nach einer Byte-Code Untersuchung mit Findbugs kriege ich eine DLS_DEAD_LOCAL_STORE Warnung für die Variable extensionLength. Sollte die nicht komplett aus dem Byte-Code verschwunden sein? Oder muss ich beim Kompilieren dafür noch irgend einen Parameter verwenden?
 

Flown

Administrator
Mitarbeiter
Also ich kann nur sagen, dass ich das nicht reproduzieren kann. Hast du das schon mal mit javap -c angesehen?
 

Neumi5694

Top Contributor
Noch nicht, nein. Mache ich, sobald ich die Gelegenheit habe.
Hier sind 2 spezifische Beispiele (zumindest der Code-Ausschnitt), wo die Warnung kommt. Ich dachte zuerst, es liegt am Lambda, aber das zweite Beispiel hat keinen.
Hier ist minimumLength das Problem
Java:
...
    final double minimumLength = 0.015;
    retVal.forEach((oneContour) -> {
      int nSegments = oneContour.size();
      List<Integer> indizes = new ArrayList<>();
      for (int i = 0; i < nSegments; i++) {
        SimpleSegment oneSegment = oneContour.get(i);
        if (oneSegment.getLength() < minimumLength) {
          indizes.add(i);
        }
      }
   }
...
In diesem stört ihn minCleanWidth, obwohl es 2 Stellen gibt, wo der Wert verwendet wird.
Java:
....
    final double minCleanWidth = 0.2;
      final double maxCleanWidth = 1;
      double finalCleanWidth = nominalCleanWidth;
      if (finalCleanWidth > minCleanWidth) {
...
    }
    finalCleanWidth = Math.max(Math.min(maxCleanWidth, finalCleanWidth), minCleanWidth);
  }
...
 

Flown

Administrator
Mitarbeiter
In dem ersten Beispiel kann man schon sagen, dass die Konstante evtl. nicht inlined wird, da Lambdas einen anderen Scope haben.

Beim zweiten Beispiel ... keine Ahnung.
 

Neumi5694

Top Contributor
Ich hab reingeschaut (Parameter -s -c -constants), konnte aber nichts brauchbares finden, die Konstanten waren nicht gelistet.


Schon seltsam. Es hat keine hohe Prio, das tritt in einem Programm mit ca. 500 Klassen an vielleicht 10 Stellen auf, ich hab also einfach mal ein Ignore vor die Methode gesetzt.
 

Neumi5694

Top Contributor
Das erklärt einiges.
Mich wundert nur, dass es im Byte-Code überhaupt noch Referenzen auf die Final-Variable gibt. Ich dachte, die wird komplett ersetzt, sofern direkt ein primitiver Wert zugewiesen wurde.
Haken dran erst mal, danke für die Info :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Konstanten initialisieren - FRAGE Allgemeine Java-Themen 3
H Best Practice zu vielen konstanten Objekten? Allgemeine Java-Themen 10
E Variablen Konstanten definieren Allgemeine Java-Themen 4
F Konstanten mir Strings "verknuepfen" Allgemeine Java-Themen 10
Z Konstanten in Java Allgemeine Java-Themen 9
S jdk versus openjdk - Optimierung von Konstanten? Allgemeine Java-Themen 8
J abstrakte Klassen, Konstanten und Konstruktor Allgemeine Java-Themen 9
D binäres ODER oder mehr Konstanten? Allgemeine Java-Themen 10
I Konstanten bei Erzeugung eines Objekts initialisieren Allgemeine Java-Themen 3
Schandro Annotation vs Javadoc bei Konstanten Allgemeine Java-Themen 2
L Konstanten der Klasse Color - Naming Conventions Allgemeine Java-Themen 6
GilbertGrape persistentes Enum oder Konstanten? Allgemeine Java-Themen 3
F Warum lokale Konstanten klein schreiben? Allgemeine Java-Themen 4
G Effizienz von enum vs. Konstanten Allgemeine Java-Themen 4
R Namen von Konstanten mit Strings vergleichen Allgemeine Java-Themen 7
T Probleme mit Konstanten und Stringverkettung Allgemeine Java-Themen 5
D Zusammensetzen von konstanten String Arrays zu einem Neuen Allgemeine Java-Themen 14
C Seltsame Konstanten (und Verwendung) Allgemeine Java-Themen 15
R Erstellen zusätzlicher Konstanten beim Kompiliervorgang Allgemeine Java-Themen 3
M Speicherplatzanforderung von Konstanten Allgemeine Java-Themen 13
I strip-debug - debug-Infos aus mitgelieferter Lib entfernen Allgemeine Java-Themen 3
E Hall vom Clip entfernen Allgemeine Java-Themen 5
OnDemand Teile eines Links entfernen Allgemeine Java-Themen 6
TheSepp Wie kann man Leerzeichen aus einer Array liste entfernen? Allgemeine Java-Themen 10
killig Textdatei einlesen und in HashMap speichern (duplikate entfernen) Allgemeine Java-Themen 12
J Spieler aus der Spielerliste zu entfernen Allgemeine Java-Themen 0
J Spieler aus der Spielerliste entfernen in dem Spiel 17und 4 Allgemeine Java-Themen 2
C Koordinaten LONG/LAT eines neuen Punktes in bestimmter Entfernen und Winkel berechnen Allgemeine Java-Themen 3
Kingamadeus2000 Alle mehrfach vorkommenden Buchstaben rekursiv aus einem String entfernen. Allgemeine Java-Themen 6
R char aus String entfernen Allgemeine Java-Themen 10
J Wie kann ich von Vornherrein einen Fokus auf ein Objekt entfernen? Allgemeine Java-Themen 3
Y ArrayListe eingegebenen index entfernen Allgemeine Java-Themen 1
S Inlining erzwingen kombiniert mit Entfernen von Imports..? Allgemeine Java-Themen 11
G JFileChooser Fokus entfernen?! Allgemeine Java-Themen 15
S Methoden "Unschöne" Break-Anweisung aus verschachtelter Funktion entfernen Allgemeine Java-Themen 11
KeVoZ_ JSoup - HTML Tag entfernen Allgemeine Java-Themen 1
mrBrown Unicode-WhiteSpaces aus String entfernen Allgemeine Java-Themen 14
S Abhaengigkeiten auf Klassenebene entfernen..? Allgemeine Java-Themen 7
T ArrayList zeilenumbruch entfernen Allgemeine Java-Themen 13
J Pattern aus String entfernen Allgemeine Java-Themen 2
R Duplikate aus einer Textdatei entfernen? Allgemeine Java-Themen 20
K Input/Output störende Leerzeichen entfernen Allgemeine Java-Themen 11
J Typecast entfernen Allgemeine Java-Themen 7
S Entfernen von allen Nicht-Buchstaben chars aus einem String ohne Regex..? Allgemeine Java-Themen 10
T Hardware sicher entfernen Allgemeine Java-Themen 8
M Mehrere CRLF entfernen Allgemeine Java-Themen 13
Q "Doppelte" Einträge einer Liste entfernen Allgemeine Java-Themen 14
T Swing JTextAera Zeilenumbruch entfernen Allgemeine Java-Themen 7
X Chinesische Schriftzeichen aus String entfernen Allgemeine Java-Themen 6
T JRE komplett von einem PC entfernen? Allgemeine Java-Themen 5
J Schlüsselwörter entfernen - Wo / wie am performantesten? Allgemeine Java-Themen 3
M Klasse aus xyz.class Datei laden / package entfernen? Allgemeine Java-Themen 4
L-ectron-X Regex zum Entfernen von mehrzeiligen Kommentaren Allgemeine Java-Themen 2
E Html tags entfernen optimieren Allgemeine Java-Themen 12
G Element aus Liste entfernen Allgemeine Java-Themen 6
X Duplikate aus eigenen Datentypen entfernen Allgemeine Java-Themen 14
C Zeilenumbruch aus JTextArea entfernen Allgemeine Java-Themen 6
T Element aus Vector entfernen Allgemeine Java-Themen 4
G Mit JarSigner erstellte Signierung entfernen Allgemeine Java-Themen 8
hdi text durchsuchen -> satzzeichen entfernen Allgemeine Java-Themen 5
C Satzzeichen aus String entfernen Allgemeine Java-Themen 6
S Anonymen MouseListener entfernen? Allgemeine Java-Themen 2
R Entfernen der '..' Notation aus dem Pfad Allgemeine Java-Themen 2
G führende nullen entfernen Allgemeine Java-Themen 14
A ArrayListe :Doppelte entfernen -> keine Referenzen Allgemeine Java-Themen 26
A Leerzeichen entfernen Allgemeine Java-Themen 3
G HTML Code aus String mittels REGEX entfernen Allgemeine Java-Themen 2
L Whitespace in einer html Site entfernen Allgemeine Java-Themen 10
M Elemente aus Liste entfernen? Allgemeine Java-Themen 7
T Duplikate aus ArrayList entfernen Allgemeine Java-Themen 2
G zeilenummern entfernen Allgemeine Java-Themen 9
G Hashset einen eintrag zufällig entfernen Allgemeine Java-Themen 4
B Entfernen von Zeilen/Spalten aus einer Matrix Allgemeine Java-Themen 8
T - Zeilenumbruch entfernen Allgemeine Java-Themen 2
byte Erste Zeile einer Textdatei entfernen Allgemeine Java-Themen 5
J sonderzeichen entfernen Allgemeine Java-Themen 6
m@nu Schreibschutz entfernen und OutputStream öffnen Allgemeine Java-Themen 6
G Leerzeichen entfernen unter 1.3.x Allgemeine Java-Themen 5
C GC: Referenz entfernen Allgemeine Java-Themen 6
F Dateigröße eines entfernen Images ermitteln Allgemeine Java-Themen 3
S Build-Zeitpunt (Datum und Uhrzeit) irgendwie während der Laufzeit zugänglich machen..? Allgemeine Java-Themen 4
B Liste ändern während Iteration über Diese? Allgemeine Java-Themen 16
D Boolean von ein anderem Java Programm während der Laufzeit ändern Allgemeine Java-Themen 23
N Generic Type einer Generischen Klasse während der Laufzeit bekommen Allgemeine Java-Themen 2
kodela Daten während Laufzeit zugriffsbereit Allgemeine Java-Themen 15
Neumi5694 Interpreter-Fehler final Eigenschaft während Laufzeit geändert Allgemeine Java-Themen 2
A Java Klasse auf Tomcat während der Laufzeit austauschen Allgemeine Java-Themen 1
D Erhöhung der Programmgeschwindigkeit während der Programmlaufzeit Allgemeine Java-Themen 20
T Während des Programmlaufs andere Programme ausführen Allgemeine Java-Themen 1
I NullPointer während while(){} Allgemeine Java-Themen 4
H ResourceBundle während Laufzeit bearbeiten Allgemeine Java-Themen 3
A ar während der Laufzeit überschreiben Allgemeine Java-Themen 20
M File einlesen während es beschrieben wird.. Allgemeine Java-Themen 6
X Update einer Jar während der Laufzeit Allgemeine Java-Themen 8
X Button während Thread aktiv ist disablen Allgemeine Java-Themen 11
D MouseClickEvent während MouseDraggedEvent Allgemeine Java-Themen 7
ruutaiokwu META-INF-daten bei ungepackten library-projekten während der entwicklung mit einbeziehen...? Allgemeine Java-Themen 2
J Progress Bar während Datenbank Erstellung Allgemeine Java-Themen 2
Sonecc Zugriff auf Class File einer anderen Jar während der Laufzeit Allgemeine Java-Themen 2
X Über ArrayList iterieren, während sich diese verändert Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben