簡體   English   中英

Kotlin中一個接口方法的匿名實現

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM