2011-08-25 6 views
10

다음과 같이 클래스/특성 정의가있는 가정 :어떤 클래스 유형의 인스턴스가 주어지면 상속하거나 구현하는 상위 클래스 및/또는 특성을 찾는 방법은 무엇입니까?

trait T1 {} 
trait T2 {} 
abstract class A{} 

class B {} 
class C extends A with T1 with T2 {} 

val b = new B with T1 
val c = new C 

는 B와 C의 인스턴스를 감안할 때, 나는 그들의 기업 정보를 얻는 방법 (즉, 그 b는 T1을 구현 알고, c는 구현하는, T1 및 T2)?

도움 주셔서 감사합니다. 당신은 객체 (일부 AnyRef가)의 유형을 알고 그냥 몇 가지 클래스 또는 특성의 인스턴스의 여부를 테스트하지 않으려면

+0

http://stackoverflow.com/questions/2809463/how-to-get-list-of- 특색있는 클래스에서 혼합 된 형질/2811089 –

답변

18

, 당신은 isInstanceOf 사용할 수 있습니다

b.isInstanceOf[T2] 

당신이 만약 다음 다음, 당신은 당신이 찾고있는 것을 모르는 경우, 다른 한편에서 asInstanceOf

b.asInstanceOf[T1] 

을 사용 후, 해당 유형에 캐스팅 할 자바 리플렉션을 사용해 볼 수 있습니다. 구현 특성과 인터페이스의 목록을 얻으려면 사용

c.getClass.getInterfaces 

는 슈퍼 클래스 사용을 얻으려면 :

c.getClass.getSuperclass 
+0

감사합니다. _Easy Angel_. – Adrian

관련 문제