| class JsonObject() { | |
| } | |
| class JsonArray() { | |
| } | |
| public interface Formatter<in IN: Any, out OUT: Any> { | |
| public fun format(source: IN?): OUT | |
| } | |
| public interface MultiFormatter <in IN: Any, out OUT: Any> { | |
| public fun format(source: Collection<IN>): OUT | |
| } | |
| public class Project() { | |
| } | |
| public interface JsonFormatter<in IN: Any>: Formatter<IN, JsonObject>, MultiFormatter<IN, JsonArray> { | |
| public override fun format(source: Collection<IN>): JsonArray { | |
| return JsonArray(); | |
| } | |
| } | |
| public class ProjectJsonFormatter(): JsonFormatter<Project> { | |
| public override fun format(source: Project?): JsonObject { | |
| return JsonObject() | |
| } | |
| } | |
| fun box(): String { | |
| val formatter = ProjectJsonFormatter() | |
| return if (formatter.format(Project()) != null) "OK" else "fail" | |
| } |