Define static factory methods, and make the constructor private:
static myClass fromDrawables(List<? extends Drawable> list) { return new myClass(list, null); } static myClass fromBitmaps(List<? extends Bitmap> list) { return new myClass(null, list); } private myClass(List<? extends Drawable> drawables, List<? extends Bitmap> bitmaps) { // ... }
(You probably want to add another factory method for the myClass(Integer[]) case; but I hope you get the idea of how to extend the above code for this).
Now you would invoke the factory methods, rather than the constructor:
// Not new myClass(...) myClass a = myClass.fromDrawables(drawablesList); myClass b = myClass.fromBitmaps(bitmapsList);
I'd recommend reading Effective Java 2nd Ed Item 1: "Consider static factory methods instead of constructors" for a thorough discussion of this approach.