2
편집 1 : 변경된 제목, 나쁨.코 틀린 반사 + 제네릭
class CustomEvent : Event { ... }
내가 지금 할 노력했습니다 것은 : 맞춤 이벤트 처럼
interface Event
그리고 그것을 구현하는 몇 가지 클래스 :
나는 인터페이스를 이벤트이 주어진 매개 변수로 이벤트가있는 메소드 (예 : 이벤트 인터페이스를 구현하는 모든 클래스)는
과 같습니다.fun onCustomEvent(event: CustomEvent) {
...
}
, 해당 이벤트를 목록에 추가하고 싶습니다. 따라서이 목록은 여러 이벤트를 개최하게됩니다.
List<Class<? extends Event>> eventsList;
....
Class<?> param = methodThatHasSomeEventAsParam.parameterTypes[0];
if (Event.class.isAssignableFrom(param)) {
Class<? extends Event> actualParam = (Class<? extends Event>) param;
eventsList.add(actualParam); // Adds CustomEvent to the events list.
}
그러나 코 틀린에 관해서는, 정말 방법을 잘 모르겠어요 :
자바 에서 나는 이런 식으로 뭔가 (100 % 정확하지 않을 수 있습니다)을 것 보라 제네릭을 올바르게 사용하려면 구체적으로 번역 할 수있는 번역 방법이 무엇이 될까요?
Class<? extends Event>
에서 Kotlin으로 위의 Java 코드와 동일한 동작을 유지합니다.
미리 감사드립니다.
간단히 말해서 Java의 extends 이벤트>'는''입니다. 그것은 당신의 문제를 해결합니까? 그렇지 않다면 Kotlin 코드를 더 쉽게 볼 수 있습니다. 또한 관심이있는 경우 Kotlin 제네릭에 대해 알아 보려면 참고 자료의 [* Generic Variance *] (https://kotlinlang.org/docs/reference/generics.html#variance) 섹션을 참조하십시오. –
hotkey
와우, 실제로 해결 됐어! 나는 이미 문서를 읽고 있었고, 이미 시도했다. 그러나 당신의 코멘트를 읽은 후에 나는 다시 시도했고 어딘가에 어리석은 실수를 발견했다. 그렇지 않으면 작동하지 않을 것이다 ... 감사합니다! :) –
Francisco
@ 프랭크 다른 사람들이 당신의 질문에 걸려 넘어지면 당신이 얻은 선명도로부터 이익을 얻을 수 있도록 당신이 그것을 해결하는 방법을 명확히하는 대답을 게시 할 수도 있습니다. – mfulton26