Trong đoạn Groovy sau, tôi cố gắng để thay thế cả hai phương pháp hashCode
và toString
thay thế toString sử dụng Groovy Lập trình meta
String.metaClass.toString = {-> "override" }
String.metaClass.hashCode = {-> 22 }
Nhưng khi tôi kiểm tra nó ra, chỉ việc thay thế hashCode
làm việc
String s = "foo"
println s.hashCode() // prints 22
println s.toString() // prints "foo"
Có phải toString
bằng cách nào đó là trường hợp đặc biệt (có thể vì lý do bảo mật)?
Làm thế nào để bạn biết "các lớp không cho phép ghi đè toString()" là gì? –
Tôi đăng một vấn đề mới mà hy vọng sẽ xóa mọi thứ ... http://jira.codehaus.org/browse/GROOVY-4210 –
Cảm ơn Tim, vì vậy tôi đoán câu trả lời ngắn gọn là "đó là lỗi"? –