CaseInsensitiveString không phải là một ý tưởng tồi phụ thuộc vào việc sử dụng của bạn, miễn là bạn không mong đợi nó hoạt động cùng với String.
Bạn có thể chuyển đổi CaseInsensitiveString thành Chuỗi hoặc ngược lại và đó là tất cả những gì bạn nên làm.
Vấn đề sẽ xảy ra nếu bạn cố gắng làm một cái gì đó như
class CaseInsensitiveString {
private String value;
public boolean equals(Object o) {
// .....
if (o instanceof String) {
return value.equalsIgnoreCase((String) o);
}
}
}
Bạn chắc chắn sẽ thất bại nếu bạn định biến CaseInsensitiveString của mình thành Chuỗi bình thường, bởi vì bạn sẽ vi phạm tính đối xứng và tính bắc cầu cho bằng () (và các hợp đồng khác)
Tuy nhiên, vui lòng tự hỏi, trong trường hợp nào bạn thực sự cần CaseInsensitiveString mà nó không phù hợp để sử dụng String.CASE_INSENSITIVE_ORDER? Tôi đặt cược không nhiều trường hợp. Tôi chắc chắn sẽ có trường hợp đáng để có lớp học đặc biệt này, nhưng hãy tự hỏi mình trước.