Interpreter-Fehler final Eigenschaft während Laufzeit geändert

Neumi5694

Top Contributor
Ich verwende ein Enum für Benutzervariablen, jeder der Variablen ist ein Variablentyp zugeordnet, ebenfalls vom Typ enum.
Mein Problem ... während der Laufzeit wird die final-Eigenschaft urplötzlich geändert.
Hier ein Auszug aus dem Code:

Java:
public enum Variables {
  //...
  SimpleSwitch("SIMPLESWITCH", VariableType.Formula, "key_var_simpleswitch"),
  //...
  ;
  Variables(String key, VariableType type, String stringtableKey) {
    this.variablekey = variableKey;
    this.type = type;
    this.stringtableKey = stringtableKey;
  }

  public VariableType getVariableType() {
    return type;
  }
  //...
  private final String variableKey;
  private final VariableType type;
  private final String stringtableKey;
}

public enum PPVariableType {
  Float,
  Integer,
  Boolean,
  Text,
  Formula
}

public class MainClass {

  public static void main(String... args) {
    Thread runner = new Thread() {
      @Override
      public void run() {
        for (;;) {
          //logDebug gibt Meldungen samt Location aus
          LogTools.logDebug("Variablentyp: " + Variables.SimpleSwitch.getVariableType().name());
          try {
            sleep(1000);
          } catch (InterruptedException ex) {
          }
        }
      }
    };
    runner.start();
    //Daten, Formulare usw. laden
    //...
    System.out.println("Formulare geladen");  }
}


Und jetzt die Ausgabe ...
Code:
DEBUG 09:54:26 MainClass$1.run(MainClass.java:91): Variablentyp: Formula
DEBUG 09:54:27 MainClass$1.run(MainClass.java:91): Variablentyp: Formula
Formulare geladen
DEBUG 09:54:28 MainClass$1.run(MainClass.java:91): Variablentyp: Formula
DEBUG 09:54:29 MainClass$1.run(MainClass.java:91): Variablentyp: Formula
DEBUG 09:54:30 MainClass$1.run(MainClass.java:91): Variablentyp: Formula
DEBUG 09:54:31 MainClass$1.run(MainClass.java:91): Variablentyp: Formula
DEBUG 09:54:32 MainClass$1.run(MainClass.java:91): Variablentyp: Text
DEBUG 09:54:33 MainClass$1.run(MainClass.java:91): Variablentyp: Text
DEBUG 09:54:34 MainClass$1.run(MainClass.java:91): Variablentyp: Text
DEBUG 09:54:35 MainClass$1.run(MainClass.java:91): Variablentyp: Text

Wie ist so etwas überhaupt möglich udn was kann ich dagegen tun?
 

Flown

Administrator
Mitarbeiter
Also an dem gezeigten Code wird nichts geändert und liegt sicher nicht daran.
Grundsätzlich gilt: finale Variablen sind nur zur Compilezeit garantiert unveränderbar. Mit Reflections, etc. lässt sich das leicht umgehen.
 

Neumi5694

Top Contributor
Reflections setze ich schon länger nicht mehr ein, diese Werte werden außerdem immer nur ausgelesen.
Meine Vermutung ging in die Richtung, dass der GC irgendwo reinfährt, wo er nicht hin sollte.

Mittlerweile tritt das Problem aber nicht mehr auf. Bei der Fehlerssuche habe ich noch eine Kleinigkeit geändert, die mit der Sache überhaupt nichts zu tun hat: Anstatt eine (davon vollkommen unabhängige) Boolean-Variable (zum Ein- und Ausschalten von Debug-Nachrichten) bei Programmstart fix zu setzen, habe ich sie abhängig gemacht von einer System-Property. Unabhängig vom Wert der Variable tritt der Fehler jetzt nicht mehr auf. Glücklich macht mich das nicht, der Fehler kann jederzeit zufällig wieder auftreten. Aber vorläufig kann ich es so lassen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
V Wie funktioniert das Schlüsselwort "final" von Java? Allgemeine Java-Themen 19
G final "spammen" + bedeutung Allgemeine Java-Themen 14
J Final Method Allgemeine Java-Themen 9
I Java: public final Werte: Gute oder schlechte Praxis? Allgemeine Java-Themen 6
J private static final String variable Allgemeine Java-Themen 8
T Enumeration/Static Final/Bitfield Allgemeine Java-Themen 6
M final vor dem parameter eines Konstruktors Allgemeine Java-Themen 1
D Alle Variablen final setzen ? Allgemeine Java-Themen 26
X Cannot refer to a non-final variable settings inside an inner class defined in a different method Allgemeine Java-Themen 4
G Synchronization on non final field Allgemeine Java-Themen 10
Z Als Final deklarierte Klasse im Array sortieren Allgemeine Java-Themen 2
G Klasse als final -> Laufzeitverbesserung? Allgemeine Java-Themen 4
T Final Methode dennoch überschreiben! Allgemeine Java-Themen 10
W Innere Klasse und final Allgemeine Java-Themen 11
A Als FINAL deklarieren -> sinnvoll? Allgemeine Java-Themen 16
S 2 Fragen allgemeine fragen zu final und interface Allgemeine Java-Themen 13
S Reflections und final Allgemeine Java-Themen 19
O does not declare a static final serialVersionUID field of . Allgemeine Java-Themen 6
meez immutable final? Allgemeine Java-Themen 23
S Wave Soundausgabe Java 1.4.2 contra 1.5 Final Allgemeine Java-Themen 27
G final und Variablen Allgemeine Java-Themen 16
B Java 5.0 Final Allgemeine Java-Themen 3
M 1.5 final? Allgemeine Java-Themen 2
W Enumeration ein Array/List als Eigenschaft mitgeben - warum geht das nicht? Allgemeine Java-Themen 0
V Klassenname von allen Klassen mit einer bestimmten Eigenschaft bekommen Allgemeine Java-Themen 2
D Von mehreren Objekten eine Eigenschaft abfragen Allgemeine Java-Themen 11
T Klasse mit neuer Eigenschaft für jede Subclass (kompliziert) Allgemeine Java-Themen 6
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 Compiler-Fehler Konstanten entfernen während des Kompiliervorgangs Allgemeine Java-Themen 7
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
H Labels erstellen während Programm läuft Allgemeine Java-Themen 3
T Java - Compilieren während Laufzeit Allgemeine Java-Themen 3
P Speicherauslastung während Programm dokumentieren Allgemeine Java-Themen 3
R Drag und Drop - Fehler während Laufzeit Allgemeine Java-Themen 14
G Hibernate speichert Daten nur während Session in HSQL-DB Allgemeine Java-Themen 10
H Thread während Rechenoperation wirkt nicht Allgemeine Java-Themen 2
I Startbild anzeigen während JVM geladen wird Allgemeine Java-Themen 5
J ResourceBundle / properties-datei während der Laufzeit verän Allgemeine Java-Themen 6
M Suche , bereits während der eingabe ?? Allgemeine Java-Themen 4
M Formel in einem String während Laufzeit berechnen. Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben