このコードは機能しますが、try/catch box
.
public enum AccentuationUTF8 {/** */
é, /** */è, /** */ç, /** */à, /** */ù, /** */
ä, /** */ë, /** */ö, /** */ï, /** */ü, /** */
â, /** */ê, /** */î, /** */ô, /** */û, /** */
}
......
final EnumSet<AccentuationUTF8> esUtf8 = EnumSet.noneOf(AccentuationUTF8.class);
final String[] acc1 = {"é", "à", "u"};
for (final String string : acc1) {
try { // The ontologic problem
esUtf8.add(AccentuationUTF8.valueOf(string));
} catch (final Exception e) {
System.out.println(string + " not an accent.");
}
}
System.out.println(esUtf8.size() + "\t" + esUtf8.toString()
出力:
u not an accent.
2 [é, à]
単語または文のすべてのアクセントを含む EnumSet を生成したいと考えています。
コメントの後に編集
EnumSet
を使用せずにそのようなを管理することは可能ですかtry
(AccentuationUTF8.valueOf(string)
?- コーディングするより良い方法はありますか?
最終編集
あなたの応答は私に良い解決策を示唆しています:なぜならEnumSet.contains(Object)
、それを変更する:例外なしでaを返すことができるthrow an Exception
一時的なものを作成するからです。
したがって、醜いものは削除され、コードは次のようになります。HashSet
null
try/catch
final Set<String> setTmp = new HashSet<>(AccentsUTF8.values().length);
for (final AccentsUTF8 object : AccentsUTF8.values()) {
setTmp.add(object.toString());
}
final EnumSet<AccentsUTF8> esUtf8 = EnumSet.noneOf(AccentsUTF8.class);
final String[] acc1 = {"é", "à", "u"};
for (final String string : acc1) {
if (setTmp.contains(string)) {
esUtf8.add(AccentsUTF8.valueOf(string));
} else {
System.out.println(string + " not an accent.");
}
}
System.out.println(esUtf8.size() + "\t" + esUtf8.toString()
お気遣いありがとうございます。