Wie lassen sich Objektkonstanten initialisieren, wenn sie eine Bedingung erreichen?

mathilda712

Mitglied
Ich dachte Objektkonstanten seien final und ihre Werte würden sich nicht mehr verändern lassen. Nun soll ich einen der Objektkonstanten nur mit einem Wert initialisieren, wenn der vorherig bestimmte Konstruktorparameter negativ ist.

Meine Idee wäre eine if-Verzweigung. Also:

if (Konstruktorparameter < 0) {
Objektkonstante = Wert;
}

Ist das möglich?
 
Nicht statische Konstanten einer Klasse können durch den Konstruktor initialisiert werden. Es muss lediglich sichergestellt werden, dass dies auch passiert, wenn ein "if" die Initialisierung beeinflusst; in diesem Fall muss auch eine Initialisierung im "else" Zweig vorhanden sein.
Wenn mehrere Konstruktoren vorhanden sind müssen diese ebenfalls eine solche Initialisierung sicherstellen.
 
Was verstehst du denn unter dem Begriff "Objektkonstante"? Diesen Begriff gibt es so eigentlich nicht.

Kannst du dafür ein Codebeispiel zeigen?

Java:
class Foo {
 
    // ??
 
}


Bei Fragen wie "wenn... dann soll..." ist "if" meist keine ganz schlechte Idee.
Unter Objektkonstante verstehe ich sowas:
private final double x;
 
Um es mal mit etwas Code auszudrücken. Folgendes wäre eine kompilierbare Klasse.

Java:
public class Demo
{
	private final int VALUE;
	
	public Demo(boolean aBoolean)
	{
		if(aBoolean)
		{
			VALUE = 20;
		}
		else
		{
			VALUE = 70;
		}
	}
	
	public Demo()
	{
		this(true);
	}
	
	public Demo(int anInt)
	{
		if(anInt == 10000)
		{
			VALUE = 10;
		}
		else
		{
			VALUE = 100;
		}
	}
}

Der erste und letzte der Konstruktoren initialisiert jeweils in jedem Fall die Konstante. Der zweite Konstruktor benutzt durch das this(true); den ersten und somit ist auch hier die Voraussetzung erfüllt, dass die Konstante in jedem Fall initialisiert wird.
 

Zurück
Oben