如何创建一个接口的匿名实现?

我有一个接口:

interface TileSet { fun contains(x: Int, y: Int) : Boolean } 

我想能够创建瓦片集合(瓦片是一对x和y整数坐标):

 fun TileSet.union(another: TileSet) : TileSet = // .. 

在Java 8中,我可以这样做:

 @FunctionalInterface public interface TileSet { boolean contains(int x, int y); public default TileSet unite(TileSet another) { return (x, y) -> TileSet.this.contains(x, y) && another.contains(x, y); } } 

所以一个接口是用TileSet#unite()的lambda实现的。 或者可以用旧的匿名类方法来实现:

 public default TileSet unite(TileSet another) { return new TileSet() { @Override public boolean contains(int x, int y) { return TileSet.this.contains(x, y) && another.contains(x, y); } } } 

我如何在Kotlin中创建一个匿名的单一方法接口实现?

我知道如何做到这一点,如果我使用(Int, Int) -> Boolean代替TileSet ,但我希望类型有一个描述性的名称,而不是一个函数签名。

文档中有一些匿名类的例子,但不包括接口。

这是我如何创建一个接口的实例:

 fun TileSet.union(another: TileSet) : TileSet = object : TileSet { override fun contains(x: Int, y: Int) : Boolean = this@union.contains(x, y) || another.contains(x, y) } 

请注意,与文档中的示例不同, object : TileSet后面没有括号。