logoalt Hacker News

vips7Lyesterday at 5:46 PM0 repliesview on HN

and for Kotlin/Scala you can use some cheeky operator overloading via companion objects.

    sealed Interface A {
        class B: A
        class C: A
        companion object {
            operator fun invoke(s: String) = when (s) {
                "B" -> B()
                "C" -> C()
            }
        }
    }

    val a = A("B")