CaseInsensitiveString no es una mala idea, depende de su uso, siempre que no espere que funcione junto con String.
Puede convertir un CaseInsensitiveString en un String, o viceversa, y eso es todo lo que debe hacer.
El problema ocurrirá si intentas hacer algo como
class CaseInsensitiveString {
private String value;
public boolean equals(Object o) {
// .....
if (o instanceof String) {
return value.equalsIgnoreCase((String) o);
}
}
}
Está condenado al fracaso si va a hacer que su CaseInsensitiveString sea corporativa con String normal, porque violará la simétrica y la transitiva para equals () (y otros contratos)
Sin embargo, pregúntese, ¿en qué caso realmente necesita este CaseInsensitiveString que no es adecuado para usar String.CASE_INSENSITIVE_ORDER? Apuesto a que no hay muchos casos. Estoy seguro de que habrá un caso que vale la pena tener esta clase especial, pero pregúntese primero.