このコードを実装する最速の方法は何かを判断しようとしています:
Pattern ID_REGEX = Pattern.compile( "[A-Za-z0-9_\\-.]+" );
boolean match = ID_REGEX.matcher( id ).matches();
if ( !match ) throw new IllegalArgumentException("Disallowed character in ID");
ID_REGEX が定数であることを考えると、BitSet や許可された値の配列のようなものが、これを実装する最速の方法であると思います。
Character.isLetterではなく、A-Za-z を検索することに注意してください。
OSS 実装に対する追加の称賛