Ich habe ein letztes nicht-statisches Element:Kann in Java ein letztes Feld von einem Konstruktorhelfer initialisiert werden?
private final HashMap<String,String> myMap;
ich es initialisieren möchte eine Methode, mit dem Konstruktor aufgerufen werden. Da myMap endgültig ist, kann meine "Helfer" -Methode es nicht direkt initialisieren. Natürlich habe ich Optionen:
Ich könnte den myMap-Initialisierungscode direkt im Konstruktor implementieren.
MyConstructor (String someThingNecessary)
{
myMap = new HashMap<String,String>();
myMap.put("blah","blahblah");
// etc...
// other initialization stuff unrelated to myMap
}
Ich konnte mein Helfer-Methode haben die HashMap zu bauen, schicken Sie es an den Konstruktor, und haben der Konstruktor dann das Objekt zu myMap zuweisen.
MyConstructor (String someThingNecessary)
{
myMap = InitializeMyMap(someThingNecessary);
// other initialization stuff unrelated to myMap
}
private HashMap<String,String> InitializeMyMap(String someThingNecessary)
{
HashMap<String,String> initializedMap = new HashMap<String,String>();
initializedMap.put("blah","blahblah");
// etc...
return initializedMap;
}
Methode # 2 ist in Ordnung, aber ich frage mich, ob es irgendeine Art und Weise, das ich der Hilfsmethode direkt werden könnte myMap manipulieren. Vielleicht kann ein Modifikator, der darauf hinweist, nur vom Konstruktor aufgerufen werden?
MyConstructor (String someThingNecessary)
{
InitializeMyMap(someThingNecessary);
// other initialization stuff unrelated to myMap
}
// helper doesn't work since it can't modify a final member
private void InitializeMyMap(String someThingNecessary)
{
myMap = new HashMap<String,String>();
myMap.put("blah","blahblah");
// etc...
}
Wissen Sie, was die Leute tun, die Ihre Frage beantworten? Ja, sie werden es ausprobieren, indem Sie Eclipse öffnen und Ihren Code kopieren! :) – Simon
@Simon Meine Frage fordert eine Alternative zu dem, was ich versucht habe. Ich frage mich, ob jemand mit besseren Kenntnissen dieser Sprache mich zu einem Schlüsselwort oder Paradigma führen kann, das mir unbekannt ist. – csj
die Antwort ist Nr. Quelle: Java Sprachspezifikation 8.3.1.2 – mihi