If you really want doStuff
to return two values: There may well be a better way to design this. Nevertheless, if you've decided that having doStuff
return two values is really the best design, it can be done with a simple helper class:
static class MyClassAndBoolean {
public MyClass obj;
public boolean b;
public MyClassAndBoolean(MyClass obj, boolean b) { this.obj = obj; this.b = b; }
}
and then change doStuff
's return type to MyClassAndBoolean
. This is one of the very few cases where I think public fields in a class are OK. Since you're defining a simple class just to use as a function result, rather than representing a coherent concept, the usual concerns about defining accessors instead of exposing fields, etc., don't really apply. (P.S. I just guessed at boolean
for the other type, but it can be anything, of course.)
Another workaround:
MyClass[] obj = new MyClass[1];
result = doStuff(obj);
Change doStuff
's parameter type to MyClass[]
, and have it stuff the new object into parameter[0]
. I do see this idiom used in some of the Java and Android library methods.