, , "", " " ( , , "verbose, " ).
, , . :
:
class Holder {
private String foo;
private UserClass bar;
boolean isString;
boolean initialized=false;
Holder (String str) { foo = str; isString=true; }
Holder (UserClass bar) { this.bar = bar; isString=false; }
String getStringVal () {
if (! initialized) throw new IllegalStateException ("not initialized yet");
if (! isString) throw new IllegalStateException ("contents not string");
return foo;
}
// with a similar method for getUserClassVal()
...
}
enum , isString - .
, , :
List samsList = new ArrayList()
, , :
samsList.add (new Holder(stringVal));
samsList.add (new Holder(userClassVal));
: (holder.isString()), , . , foreach :
for (Holder holder: samsList) {
if (holder.isString())
doYourStringProcessing (holder.getStringVal());
else
doYourUserClassProcessing (holder.getUserClassVal());
}
, , , , .
, , , , , / -. , , , , , , " ?".
: , , , . , ( " X Y" " X Y, Z" ).
, , , /.