JavaとInnerClassとGroovy

JavaのInnnerClassをリフレクションで呼んでみたらGroovyの話に吹っ飛んだよ。 http://d.hatena.ne.jp/irof/20110426/p1 https://gist.github.com/942601 http://d.hatena.ne.jp/backpaper0/20110429/1304096170 続きを読む
5
irof @irof

@naka_aki_spl 付けるの面倒なんですけどね。原理主義だと付けないのが普通だから、内部クラスは外部のインスタンスに依存して然るべきなんでしょうけど、現実論だと名前空間でしかないですよね。

2011-04-30 10:43:19
susumuis/いしがみプロ @susumuis

@naka_aki_spl 無名クラスだとデバッグするとクラス名がOuterClass$xxxxxとかわけわからなくなってしまうので、クラス定義して名前付けますね。

2011-04-30 10:46:14
非実在naka aki @naka_aki_spl

@irof java原理主義者ならstatic付けないんでしょうね。javaのことなど知らん原理主義者なら付けるかんじかなあと。俺は後者でして、依存「すべき」とも特に思っていません。こんな機能誰得?としか思ってない。

2011-04-30 10:53:37
irof @irof

「外部のインスタンス渡してないからNullPointerExceptionになるよなー。」と思ってたけど「あ、やっぱりなるんだ。へー。」で止まった自分にガッカリなう。

2011-04-30 11:06:38
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

個人的にはJavaでinner classを使うときにpublicにしない。publicならそいつは何かのinterfaceを実装しているときかな。inner classがprivateであるなら、outer classをテストすれば十分にinner classはテストできてる。

2011-04-30 11:15:01
ふも @fumokmm

[Java][Groovy]JavaとGroovyがInnerクラスできゃっきゃうふふする話。 / Togetter - 「JavaとInnerClassとGroovy」 http://htn.to/hHnm2d

2011-04-30 11:16:22
ふも @fumokmm

GroovyではInnerクラスはv1.6だかv1.7だかまで実装されてなかったから、鬼門といえば鬼門だな。Groovyの場合クロージャー使ってよね、という立場だろうしね。

2011-04-30 11:18:11
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

それでもprivateなinner classをテストしたいときにGroovyは有効なんですよね。今のJavaプロジェクトでもテストコードは全てGroovyで済ませているけど、かなり楽。privateを気にせずアクセスできるし。

2011-04-30 11:18:55
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

Javaオンリーだとテストコードをうまく書くためにプロダクトコードをprivateにしたいところをパッケージプライベートにするという事がたまにおきるんだけど、Groovyでテストコードを書けばprivateにアクセスできるからJavaのアクセスレベルを原義的に扱える。

2011-04-30 11:20:36
irof @irof

@kyon_mm publicなinner classは無いですよねー…と思いましたが、EffectiveJavaのBuilderとかでは使ってたりしますね。privateのテストはclassだろうとmethodだろうと例外でしょう。レガシーコードだと…うん。

2011-04-30 11:20:42
irof @irof

Javaに対してGroovyってカードを切れるのは凄く強いと思う。外から見てるとカードゲームでジョーカーきりまくってる風に見える。ずるい。

2011-04-30 11:24:23
ふも @fumokmm

Innerクラスは4つある。static innerクラス、innerクラス, ローカルクラス, そして無名inner class。だったような気が。#Java あまり覚えてない。

2011-04-30 11:25:15
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

うえっへへ^q^ RT @irof: Javaに対してGroovyってカードを切れるのは凄く強いと思う。外から見てるとカードゲームでジョーカーきりまくってる風に見える。ずるい。

2011-04-30 11:26:09
ふも @fumokmm

privateにもアクセスできるけど、privateなことはクラス内で解決してください。テストするのはpublicな部分だけでいいような気も。#Groovy #Java

2011-04-30 11:26:48
ふも @fumokmm

public static inner クラスは良く使いますよね! RT @kyon_mm: @irof Builderの部分がパッと思い出せないのですが、publicなインナークラスだとMap.Entryとかがあたります。一応インターフェースとはなっていますが、なんとも気持ち悪

2011-04-30 11:27:39
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

Groovyでテストコードを書けないJavaプロジェクトなんぞ死体同ぜ(ry

2011-04-30 11:28:18
irof @irof

EffectiveJavaの22で書かれてますので興味のある方どうぞー RT @fumokmm: Innerクラスは4つある。static innerクラス、innerクラス, ローカルクラス, そして無名inner class。だったような気が。#Java あまり覚えてない。

2011-04-30 11:32:11