CaseInsensitiveString bukan ide yang buruk tergantung pada penggunaan Anda, selama Anda tidak mengharapkannya untuk bekerja sama dengan String.
Anda dapat mengonversi CaseInsensitiveString ke String, atau sebaliknya, dan hanya itu yang harus Anda lakukan.
Masalah akan terjadi jika Anda mencoba melakukan sesuatu seperti
class CaseInsensitiveString {
private String value;
public boolean equals(Object o) {
// .....
if (o instanceof String) {
return value.equalsIgnoreCase((String) o);
}
}
}
Anda pasti akan gagal jika Anda akan membuat perusahaan CaseInsensitiveString Anda dengan String normal, karena Anda akan melanggar simetris dan transitif-ness untuk equals () (dan kontrak lainnya)
Namun, harap tanyakan pada diri sendiri, dalam hal apa Anda benar-benar membutuhkan CaseInsensitiveString ini yang tidak cocok untuk menggunakan String.CASE_INSENSITIVE_ORDER? Saya yakin tidak banyak kasus. Saya yakin akan ada kasus yang layak memiliki kelas khusus ini, tetapi tanyakan pada diri Anda terlebih dahulu.