2016年2月11日

日記

ちょっと Scala のコンパニオンオブジェクトを Java のリフレクション使ってイジるにはどうするんだろと思ってると、『Scalaスケーラブルプログラミング第2版』31章(31.1.3)に普通に書いてあったので試してみた。 Scala さんはメジャーバージョンアップ後の互換性が(Java に比べて)捨てられる傾向にあるイメージがあるのでそのままで大丈夫かなと思ったけど、特に変更はなくそのまま使えた。 コンパニオンオブジェクトに対しては同名のクラスの末尾に「$」記号が付いたクラスが別に作成されて、シングルトンなオブジェクトが静的な MODULE$ フィールドとして保持されている、という感じなよう。

class MyClass

object MyClass

だと(いくつか省略してる箇所があるけど)

public class MyClass{}

public final class MyClass${
    public static final MyClass$ MODULE$
}

みたいなコードになるようだね。 これを踏まえればリフレクションでアクセスするのは普通にできた。 よしよし。

Scalaスケーラブルプログラミング第2版

Scalaスケーラブルプログラミング第2版


NHK 世界のニュース ザッピング(翌日)

  • ベトナム VTV】 成功の秘けつは互いのきずな
  • 【仏 F2】 海で危機一髪
  • 【韓国 KBS北朝鮮外貨獲得狙うも・・・
  • 【ロシア TV】 ロシア独自の医療ロボット開発中
  • 【インド NDTV】 マハラシュトラ州首相超能力を支持?
  • 【米 CNN】 ジカ熱ワクチン準備には1年以上

ツイート (ツイート数 32)