Cho trước là một phương thức Java trả về java.lang.Object
s cho một chuỗi nhất định. Tôi muốn bọc phương thức này theo phương thức Scala để chuyển đổi các thể hiện được trả về thành một số loại T
. Nếu chuyển đổi không thành công, phương thức sẽ trả về None
. Tôi đang tìm một cái gì đó tương tự như thế này:Loại truyền bằng cách sử dụng tham số kiểu
def convert[T](key: String): Option[T] = {
val obj = someJavaMethod(key)
// return Some(obj) if obj is of type T, otherwise None
}
convert[Int]("keyToSomeInt") // yields Some(1)
convert[String]("keyToSomeInt") // yields None
(Làm thế nào) Điều này có thể đạt được bằng cách sử dụng API phản chiếu của Scala không? Tôi biết rõ rằng chữ ký của convert
có thể phải được thay đổi.
Cảm ơn rất nhiều cho việc này. Tôi đã tạo ra 'safeCast [T: ClassTag]' của riêng mình trên một chuyển đổi ngầm từ Option [Any] nhưng nhận thấy các nguyên thủy luôn quay trở lại None. Sử dụng Typeable Tôi đã thay đổi phần thân thành một 'opt.flatMap đơn giản (_. Cast [T])' và nó hoạt động rất tốt. – ShawnFumo