2012-04-22 3 views
7
public <T extends java.util.EventListener> T[] getListeners(final Class<T> listenerClass) { 
    ... 
} 

위의 Java generics와 동일한 C# generics 표기법은 무엇입니까?C# 제네릭과 미친되지 않습니다

매개 변수 listenerClass는 & 개체가 아닙니다. 그러나 객체 T는 특정 계층에 속해야합니다.

+0

'클래스 '은 무엇을 의미합니까? – Gabe

+0

그래서 java : 나는 MyListener.class를 전달한다. MyListener는 클래스 이름이다. 메소드는 객체를 매개 변수로 허용하지 않는다. – pulancheck1988

+0

'T '가 무엇인지 알아낼 수 있는가? 그렇다면 메서드 내에서 'T'를 사용할 수 있기 때문에 C#에서는 필요하지 않습니다. – Gabe

답변

13
public T[] GetListeners<T>() where T : EventListener 
{ 
} 
+0

무엇이 param에 일어 났습니까 ?? 클래스 (타입) 메소드를 반환합니다. 그 타입의 객체 배열을 반환합니다. – pulancheck1988

+3

리턴 타입이 MyListener 타입의 배열이라고합시다. 다음과 같이 메서드를 호출 할 수 있습니다. MyListener [] mylisteners = GetListeners (); –

+3

@ pulancheck1988 : Java와 달리 C#에서는 generic 인수가 구체화되고 액세스 가능합니다. 그래서'T.class'는 자바에서는 불법이지만, C#과 같은'typeof (T)'는 완벽하게 합법이고'T'의 타입에 해당하는'Type' 객체를 돌려 줄 것입니다. 'Class '객체를 돌아 다니는 자바 관용구는 자바의 제네릭 구현의 제한에 대한 일시적인 해결책이다. C#에는 동일한 제한이 없으므로 관용구가 다릅니다. –

관련 문제