private static final EmailClient createFromString(final String... args) throws IOException { // switch doesn't support null if (args.length == 0) return getPreferred(); else if ("mailto".equals(args[0])) return MailTo; final EmailClientType t = EmailClientType.valueOf(args[0]); switch (t) { case Outlook: return Outlook; case AppleMail: return AppleMail; case Thunderbird: if (args.length == 2) return Thunderbird.createFromExe(new File(args[1])); else if (args.length == 3) return Thunderbird.createFromCommandLine(args[1], args[2]); else throw new IllegalArgumentException(t + " needs 1 or 2 arguments"); default: throw new IllegalStateException("Unknown type " + t); } }