Type aliasing Java classes with statics

后端 未结 2 592

Suppose MyClass is a class defined in Java, and has many static as well as non-static members. I tried to alias this class (and associated companion object) in a Sc

相关标签:
2条回答
  • 2021-02-15 07:06

    Although this works in pure Scala for a class + companion object, it's not possible with Java's static methods, as these don't belong to any interface.

    Scala could, in theory, create an object containing delegates to all the static methods of some class, but it doesn't do this currently. It's also possible to write a compiler plugin for this if you feel comfortable writing plugins.

    Failing that, you'll either have to create an object full of delegates yourself, or just cherry-pick a few methods and pass them around as functions.

    0 讨论(0)
  • 2021-02-15 07:31

    it's not possible with Java's static methods, as these don't belong to any interface.

    Update 5 years later: PR 5131 mentions:

    We used to disable generation of static forwarders when a object had a trait as a companion, as one could not add methods with bodies to an interface in JVM 6.

    The JVM lifted this restriction to support default methods in interfaces, so we can lift the restriction on static forwarders, too.

    Fixes scala-dev issue 59

    See commit 41c9a17 by Jason Zaugg (retronym).

    0 讨论(0)
提交回复
热议问题