Câu trả lời:
Bằng cách gọi toString()
phương thức của nó .
Trả về một chuỗi chứa các ký tự trong chuỗi này theo cùng thứ tự với chuỗi này. Độ dài của chuỗi sẽ là độ dài của chuỗi này.
Có một vấn đề tinh tế ở đây là một chút vấn đề.
Các toString()
phương pháp có thực hiện căn cứ vào Object
. CharSequence
là một giao diện; và mặc dù toString()
phương thức xuất hiện như một phần của giao diện đó, nhưng không có gì tại thời gian biên dịch sẽ buộc bạn ghi đè lên nó và tôn trọng các ràng buộc bổ sung mà CharSequence
toString()
javadoc của phương thức đặt ra cho toString()
phương thức; tức là nó sẽ trả về một chuỗi chứa các ký tự theo thứ tự được trả về charAt()
.
IDE của bạn thậm chí sẽ không giúp bạn bằng cách nhắc nhở bạn rằng bạn có thể nên ghi đè toString()
. Ví dụ: trong intellij, đây là những gì bạn sẽ thấy nếu bạn tạo một CharSequence
triển khai mới : http://puu.sh/2w1RJ . Lưu ý sự vắng mặt của toString()
.
Nếu bạn dựa vào toString()
một cách tùy tiện CharSequence
, nó sẽ hoạt động với điều kiện người CharSequence
thực hiện đã thực hiện đúng công việc của họ. Nhưng nếu bạn muốn tránh mọi sự không chắc chắn hoàn toàn, bạn nên sử dụng một StringBuilder
và append()
, như vậy:
final StringBuilder sb = new StringBuilder(charSequence.length());
sb.append(charSequence);
return sb.toString();
CharSequence
giao diện một cách rõ ràng định nghĩa toString()
- những người thực hiện sẽ không bỏ lỡ này. Các javadoc bang "Trả về một chuỗi chứa ký tự trong chuỗi này theo thứ tự như trình tự này. Chiều dài của chuỗi sẽ được chiều dài của chuỗi này" kể từ khi ra đời trong 1,4 . Mọi người, vui lòng xác minh những gì bạn upvote
StringBuilder
có thể không thực hiện được những gì bạn mong đợi. Điều tương tự cũng xảy ra với bất kỳ giao diện nào khác, chẳng hạn như List
, hoặc Set
cụ thể là các phương thức equals()
và hashCode()
phương thức sẽ biên dịch mà không ghi đè, nhưng phải được ghi đè theo hợp đồng.
Bạn có thể trực tiếp sử dụng String.valueOf ()
String.valueOf(charSequence)
Mặc dù điều này giống như toString()
kiểm tra null charSequence
trước khi thực sự gọi toString.
Điều này hữu ích khi một phương thức có thể trả về a charSequence
hoặc null
giá trị.
charSequence
là null thì chuỗi trả về sẽ "null"
và không null
.
setText(CharSequence)
không làm những gì bạn cần?