My problem is almost exactly the same as the problem posted here: [Abstract class with final uninitialized field](https://stackoverflow.com/questions/2327509/abstract-class-with-final-uninitialized-field) and I like the solution. However, my problem is a bit more complicated in that the abstract class has multiple final fields of varying types. For example, I have four `int`, two `int[]`, and two `double`. What would be the best way to force the subclasses to initialize these variables?

Options I've considered:

* Convert all fields to Strings and pass with a `Map`
* Have a really long superclass constructor
* Create a helper class that would act as a wrapper and encapsulate all the values, then pass an instance of this class to the base class

The first option is not very elegant, and seems a bit complicated, especially with arrays. The second option is very tedious, and the third option just seems like I'm overdoing it. 

Is there a "correct" way of doing this? Or if not, which of the three options posed would be the most elegant?