# Statisches Array mit Methode initialisieren



## cbae (15. Okt 2012)

Hallo, 

ich versuche gerade, die Hough Transformation in Java zu implementieren. Da diese Transformation möglichst in Realtime erfolgen soll, möchte ich die vorberechneten Werte für Sinus und Cosinus in je einem Array ablegen. 


```
double[] sinusCache = new double[180];
double[] cosinusCache = new double[180];
```

Da sich diese Werte für verschiedene Objekte der Klasse nicht ändern, sollte die Definition als (final) static erfolgen. Natürlich könnte ich diese Lookup-Table "von Hand" als Tabelle implementieren. Trotzdem möchte ich lieber eine Methode, welche das Array beim ersten Erstellen des Prozesses/Objektes/oder-was-auch-immer automatisch füllt. 

Leider konnte ich weder hier im Forum noch mit Google Informationen dazu finden... 

Vielen Dank im Voraus!


----------



## pro2 (15. Okt 2012)

Dann baue eine Methode, berechne die Werte dieser und setze sie in den Konstruktor. Wo ist das Problem?


----------



## Firephoenix (15. Okt 2012)

Schau mal hier: Initializing Fields (The Java™ Tutorials > Learning the Java Language > Classes and Objects) unter dem Punkt "Static Initialization Blocks", das sollte dir weiterhelfen.

@pro2
wenn alles in der Klasse statisch ist wird unter Umständen nie eine Instanz erzeugt, auch mit Konstruktor.

Gruß


----------



## cbae (15. Okt 2012)

pro2 hat gesagt.:


> Dann baue eine Methode, berechne die Werte dieser und setze sie in den Konstruktor. Wo ist das Problem?



Das Problem? So wärs ja zu einfach 

Weil sich die Werte auch von Objekt zu Objekt nicht unterscheiden, sollen die Arrays statisch sein (also nur EINMAL im Speicher, nicht für jedes Objekt)... 

Aber ich glaube, mit deinem Kommentar ist mir jetzt die richtige Idee gekommen. Ich kann ja beim Erstellen eines Objekts prüfen, ob das Array bereits initialisiert wurde. Merci!


----------



## cbae (15. Okt 2012)

Firephoenix hat gesagt.:


> Schau mal hier: Initializing Fields (The Java™ Tutorials > Learning the Java Language > Classes and Objects) unter dem Punkt "Static Initialization Blocks", das sollte dir weiterhelfen.
> 
> @pro2
> wenn alles in der Klasse statisch ist wird unter Umständen nie eine Instanz erzeugt, auch mit Konstruktor.
> ...



Stimmt natürlich. Statische Felder sind ohne Erzeugen eines Objektes verfügbar. 

Herzlichen Dank für den Link... das gibt mir genau das, was ich brauche


----------

