일반 확장 클래스 및 Kotlin에서 인터페이스 구현


90

특정 클래스를 확장하고 인터페이스를 구현하는 유형 변수 T를 원한다고 가정 해 보겠습니다. 다음과 같은 것 :

class Foo <T : Bar implements Baz> { ... }

Kotlin에서 이에 대한 구문은 무엇입니까?

답변:


186

꺾쇠 괄호 안에는 하나의 상한 만 지정할 수 있습니다.

Kotlin은 제약 조건이 둘 이상인 경우 일반 제약 조건에 대해 다른 구문을 제공합니다.

class Foo<T>(val t: T) where T : Bar, T : Baz { ... }

및 기능 :

fun <T> f(): Foo where T : Bar, T : Baz { ... }

여기에 문서화되어 있습니다 .


3
fun foo (arg : ClassType, InterfaceType) {}과 같이 매개 변수 유형의 fun에 사용할 수있는 방법이 있습니까? 클래스 형식 매개 변수를 추가하지 않고
Ufkoku

1
@Ufkoku, 아니요, 할 방법이 없습니다 : Kotlin에는 교차 유형이 없으며 일반 매개 변수는 명시 적으로 만 선언 할 수 있습니다.
핫키

1
@hotkey 아래에 기능이 있습니다 fun <T> wrapClientListener(listener: RemoteController.OnClientUpdateListener): T where T : RemoteController.OnClientUpdateListener, T : NotificationListenerService. T 형은 상관 없어요. 하지만이 메서드를 호출하면 Kotlin에서 특정 유형을 요청합니다. 그렇다면이 메서드를 어떻게 호출 할 수 있습니까?
leimenghao
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.