@axtavt is right. You cannot force a subclass to provide constructors with particular signatures. (In the non-reflective case there is no point because Java constructors are not polymorphic. And reflection is always a bit ... ugly.)
If you want a way to create objects that is polymorphic, you could use the Factory pattern.
public interface BaseFactory {
Base create(int arg1, String arg2);
Base create(int arg1, float arg2);
}
public class Foo implements Base { .... }
public class FooFactory implements BaseFactory {
public Base create(int arg1, String arg2) {
return new Foo(arg1, arg2);
}
public Base create(int arg1, float arg2) {
return new Foo(arg1, Float.toString(arg2));
}
}
The only hassle is that the return type of the factory method will be the base type. Hence a typically use of the factory method will need to cast the created object to the expected subtype. You can probably avoid this by using generics ...
On the plus side, using the Factory may allow you to avoid using reflection in the first place. And even if not, you can call the factory methods reflectively with the assurance that if the factory implements the factory interface, it will provide methods with the expected signatures.