Somehow another answer: do not do this.
Constructors are like any other members of your class - they should make sense "in general." The presence of designers who offer completely “different” or “independent” “interfaces” to the user looks like a smell of code to me.
You see; if you can draw a line through your class; and you will find that some elements go on the left side, and many others go on the right side of this line; then this indicates that perhaps you should divide your class along this “line” and create two classes instead.
If you really want to create the same object from different contexts; then try to define "denominator unit X"; and provide a constructor specifically for that X. Then use factory methods that can use this common constructor in different ways. This means that you either provide static methods in the same class, e.g.
static Location generateLocationFromFoo(Foo foo) { ... } static Location generateLocationFromBar(Bar bar) { ... }
Or take one more step and create a separate factory class that is used to generate the actual location objects for you.
source share