[英]How to have create an anonymous interface implementation in my Kotlin class and use it?
[英]Anonymous implementation of an interface method in Kotlin
在 java 中,您可以使用如下接口的實現:
import org.springframework.data.mongodb.core.query.Query;
@FunctionalInterface
public interface Filter {
Query apply(Query query);
}
public class FlagFilterFactory {
public Filter create(SearchQuery searchQuery) {
return q -> {
q.addCriteria(...)
return q;
};
}
但我沒有找到如何使用 Kotlin 編寫它。
@FunctionalInterface
public interface Filter {
fun apply(query: Query): Query
}
如何編寫此接口的匿名實現? 還是我肯定需要在 Kotlin 中創建一個 class 來實現它?
您可以在 Kotlin 中編寫一個fun interface
(沒有雙關語)
fun interface Filter {
fun apply(query: Query): Query
}
用法:
fun create(searchQuery: SearchQuery) =
Filter { q ->
q.addCriteria(...)
}
或者,根本不聲明新類型,只需使用function 類型(Query) -> Query
。 (您可以為此創建一個類型別名)
typealias Filter = (Query) -> Query
fun create(searchQuery: SearchQuery): Filter = { q ->
q.addCriteria(...)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.