ある部分で一時的にしか使わないクラスは、できるならばなるべく狭いスコープ内にとどめておきたいと思う。
こうした時、無名クラスを使うのは有効だが、Javaの無名クラスは、あるクラスを継承して作るか、
あるクラスを実装して作るかのどちらかで、継承と実装を同時に行うことは出来ないらしい。
何とか件のようなことができそうな書き方を探してみたところ、ローカルクラスというものを使えばよさそうだということが分かった。
C#ではこういう書き方は出来ないので面白い。(ちなみに、C++ではできた。)
サンプルプログラム
Java
public class LocalClassLesson {
public static void main(String[] args) {
class MyLocalClass{
void doSomething(){
System.out.println("This is MyLocalClass.");
}
}
MyLocalClass mc = new MyLocalClass();
mc.doSomething();
}
}
C++
#include <iostream>
using namespace std;
int main(int argc, char* argv[]){
class LocalClass{
public:
void doSomething(){
cout << "This is LocalClass." << endl;
}
};
LocalClass lc;
lc.doSomething();
}
@ITの記事に分かりやすい解説が載っている。
http://www.atmarkit.co.jp/fjava/rensai4/java5eclipse17/java5eclipse17_3.html
Wikipediaのこの記事も興味ぶかい。
http://ja.wikipedia.org/wiki/C_Sharp%E3%81%A8Java%E3%81%AE%E6%AF%94%E8%BC%83
ピンバック: 【Java】内部クラス(inner class)についてのメモ – ザワプロ!