Kotlinでstaticメソッドが定義できるようになったのでJAX-RSリベンジ
ことりん〜(挨拶)
これは Kotlin Advent Calendar 2014 の14日目です。
夏の終わりに 関西Kotlin勉強会 を開催し、私はKotlinでJAX-RSをやるという発表をしました。 JAX-RSにいくつかあるリクエストパラメータの受け取りかたのうち 「Stringの引数をひとつだけ受け取る”valueOf”という名前のstaticファクトリメソッドを持つクラス」 が実現できませんでした。 そのときのKotlinのバージョン(M7)ではstaticメソッドが定義できなかったからです。
しかしバージョンM9からplatformStaticアノテーションを使用してstaticメソッドを定義できるようになったようです。
というわけでリベンジしました。 次のような感じで書けます。
package app
import kotlin.platform.platformStatic
public class ValueObj private (val value: String) {
class object {
platformStatic fun valueOf(value: String) = ValueObj(value)
}
}
Kotlinの思想がどうあれJava言語、または既存のJavaライブラリとの共存を考慮するとstaticメソッドの 定義は必要だろうなーと思っていたのでこの機能追加は良いと思います。
個人的にはstaticファクトリメソッドを持つバリューオブジェクトを多用するので大変助かります。
おしまい。
今日のコード
- https://github.com/backpaper0/sandbox の kotlin-staticmethod-example ディレクトリ
Tinkererにはてなスターを設置した
Tinkerer で書いてるこのブログに はてなスター を設置したのでその辺まとめておきます。 なお、私は modern5 をベースにカスタマイズしたテーマを使用していますので別のテーマだと多少異なるかも知れません。
まずはてなスターのマイページでブログを登録します。 マイページのURLは http://s.hatena.ne.jp/<自分のID> です。
次に _templates/page.html のextraheadブロック( {%- block extrahead -%} と {%- endblock -%} に囲まれたところ)に次のJavaScriptコードを書きます。
<script type="text/javascript">
Hatena.Star.Token = <自分のトークン>;
Hatena.Star.SiteConfig = {
entryNodes: {
'div.main-container': {
uri: 'window.location',
title: 'document.title',
container: 'span.hatenastar'
}
}
};
</script>
<自分のトークン> にはマイページでブログを追加したあとに表示されるトークンを書いてください。
最後に実際にはてなスターを設置する場所となる要素を追加します。 私はエントリのいっちゃん下に置きたかったのでbodyブロックの最後の方に次のspan要素を書きました。
<span class="hatenastar"> </span>
自分のTinkererちからが低すぎて悩んだりもしたけれど、出来てしまえば簡単でした!
より詳しくは http://d.hatena.ne.jp/hatenastar/20070707 を参照くださいですじゃ。