Search Results

Search found 1 results on 1 pages for 'csj'.

Page 1/1 | 1 

  • In Java, can a final field be initialized from a constructor helper?

    - by csj
    I have a final non-static member: private final HashMap<String,String> myMap; I would like to initialize it using a method called by the constructor. Since myMap is final, my "helper" method is unable to initialize it directly. Of course I have options: I could implement the myMap initialization code directly in the constructor. MyConstructor (String someThingNecessary) { myMap = new HashMap<String,String>(); myMap.put("blah","blahblah"); // etc... // other initialization stuff unrelated to myMap } I could have my helper method build the HashMap, return it to the constructor, and have the constructor then assign the object to myMap. 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; } Method #2 is fine, however, I'm wondering if there's some way I could allow the helper method to directly manipulate myMap. Perhaps a modifier that indicates it can only be called by the constructor? 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... }

    Read the article

1