Hãy nói rằng tôi có các loại sau đâyLàm thế nào để xác định xem một tham số kiểu là một kiểu con của một đặc điểm?
class Foo
trait Bar
Có cách nào để thực hiện một phương pháp mà mất trong một tham số Type, T, và xác định xem T đó là một Bar? Ví dụ,
def isBar[T <: Foo: Manifest] =
classOf[Bar].isAssignableFrom(manifest[T].erasure)
Đáng buồn thay, isBar[Foo with Bar]
là false
vì tẩy xoá dường như xóa mixins.
Ngoài ra, manifest[Foo with Bar] <:< manifest[Bar]
là sai
Điều này có thể thực hiện được không?
Tôi nhìn câu hỏi này: How to tell if a Scala reified type extends a certain parent class?
nhưng câu trả lời mà không làm việc với hỗn hợp trong những đặc điểm như họ dường như bị xóa như được minh chứng trên.
Là chú thích: 'typeTag [Foo with Bar]' là viết tắt hữu ích cho 'ngầm [TypeTag [Foo with Bar]]' (giống như 'Predef.manifest' trong <2.10). –
Nói về các phím tắt, 'typeOf [T]' tương đương với 'typeTag [T] .tpe'. –