I have a `PropertyBag` class which models a set of properties consumable by objects.

I also have several classes `A1, A2, ..., AN` that have constructors of the form

`public A...(PropertyBag);`

All these classes implement the *interface* `iA`.

I use reflection to create the relevant `A...` passing in a `PropertyBag`. I extract the data from the `PropertyBag` object to yield the candidate member data of the class.

What I want to be able to do though is to force an implementer of a class `A...` at *compile time* to implement a constructor of the above form. I am aware of the oddness of my request: why ever would you want to standardise construction parameters? But I have a case for it here. 

Of course what I could do is to have a separate construction and initialisation step, as I could mark the initialisation function to be abstract, perhaps even changing `iA` to an abstract class containing that abstract initialisation function definition. I would use reflection to call initialise. That would give me the compile time failure as I desire if any `A...` is missing that initialise function. But I don't like the idea of separating construction and initialisation as an object that is constructed but not initialised has no meaning.

Am I missing a trick here? (In C++ I could enforce at compile time using templates, but can't see a way in Java).