CaseInsensitiveString non è una cattiva idea, dipende dal tuo utilizzo, a patto che non ti aspetti che funzioni insieme a String.
Puoi convertire CaseInsensitiveString in String, o viceversa, e questo è tutto ciò che dovresti fare.
Il problema si verificherà se proverai a fare qualcosa di simile
class CaseInsensitiveString {
private String value;
public boolean equals(Object o) {
// .....
if (o instanceof String) {
return value.equalsIgnoreCase((String) o);
}
}
}
Sei destinato a fallire se intendi rendere CaseInsensitiveString aziendale con String normale, perché violerai simmetria e transitive per equals () (e altri contratti)
Tuttavia, chiediti a te stesso, in tal caso hai davvero bisogno di questo CaseInsensitiveString che non è adatto per utilizzare String.CASE_INSENSITIVE_ORDER? Scommetto che non molti casi. Sono certo che ci sarà un caso che merita di avere questa classe speciale, ma prima chiediti.