mike-neckのブログ

Java or Groovy or Swift or Golang

Proxy の InvocationHandler から interface の default メソッドを呼び出す方法

  1. proxy を取得する対象のインターフェースクラスで MethodHandles.lookup() を呼び出して MethodHandles.Lookup を取得する
    1. で取得した MethodHandles.Lookupインスタンスから unreflectSpecial(Method, Class<?>) を呼び出して、MethodHandle を取得する
  2. proxy のインスタンスbindTo して invoke する
続きを読む

precompiled groovy dsl が便利そう

precompiled groovy dslbuildSrc プロジェクトに gradle ファイルを入れておくと、メインの build.gradleプラグイン取り込みの仕組みを使って取り込める機能で、ファイルを分割して apply from <file> としてたビルドファイルを分割していた仕組みの強化版(コンパイルされるので速い)です。

f:id:mike_neck:20150917235151p:plain

続きを読む

sdkman で複数のバージョンの Java をディレクトリーごとに切り替える

複数のプロジェクトを行ったり来たりする際に、プロジェクトごとに Java のバージョンが違っている際は、たいてい IntelliJ が覚えていてくれるので、それほど困ってはいないのですが、世の中にはターミナルでなんでもこなす人がいるらしく、プロジェクトごとに Java のバージョンを設定するツールが求められているらしいです。いわゆる env 系ツール(renvnodenv)ですが、それの Java 版の jenv というものがあるようです。

takezoe.hatenablog.com

ざっとドキュメントを見たところでは「特定のディレクトリのみこのバージョンを使う」という設定ができるかどうかわかりませんでした。

ということのようですが、つい先程、 sdkman でもそのようなニーズに答えるようになったようです。

env Command

というわけで、 バージョン 5.8.1 から使える env の動作を確認してみようと思ったのですが

f:id:mike_neck:20200505075414p:plain

このブログを書いている時点ではまだ更新できませんでしたが、すでに env コマンドが搭載されているようなので試してみることにしました。

続きを読む