情報科学屋さんを目指す人のメモ(FC2ブログ版)

何かのやり方や、問題の解決方法をどんどんメモするブログ。そんな大学院生の活動「キャッシュ」に誰かがヒットしてくれることを祈って。

Overlay Weaver の使い方 このエントリーを含むはてなブックマーク

「Overlay Weaver 使い方」でこのblogにやってきてくれる方がいるのに、 このblogには使い方が無い!ということで(最低限ですが)書いてみます。

今回の目的は、「『うわ、めんどくさそう』を、『とりあえず動いたからこれで行けるかもしれない』 にして、Overlay Weaverユーザ仲間を逃がさないようにしよう」です。つまるところ、 「手取り足取り」タイプです。とりあえず、動くと気分が変わりますし、 卒論終わるかなっていう不安も少しは和らぐでしょう、と。

DHT | コメント:0 | トラックバック:0 | 編集

EclipseにプラグインAptana Studioを入れてHTMLを書く このエントリーを含むはてなブックマーク

Eclipseでhtmlを書く

Eclipseの設定をATOKに合わせるなどの工夫を重ねた結果、 普段書いているこのblog(html)もEclipse上で書きたくなりました。 ただし、Eclipseはプラグインがないとhtmlを書く際のサポートが特にありません。 そこで今回は Aptana StudioのEclipse用プラグインをインストールしました。

Eclipse | コメント:1 | トラックバック:0 | 編集

Eclipse(Java)の「Cannot instantiate the type ○○」エラー このエントリーを含むはてなブックマーク

不親切なエラーメッセージだなぁと思い、検索してみたら困ってしまった人がようなのでメモ。分かる人には簡単だけど。

エラーメッセージの意味

Cannot instantiate the type ○○

というエラーが表示されたのは、おそらく

new ○○()

のようにしたときだと思います。コレは、

○○の部分がインスタンス化(new)出来ないもの(type)だよ

というエラーメッセージです。

原因

具体的な原因は、「new」の後に指定した型(type)が、インスタンス化できない「アブストラクト型(abstract type)」や「インターフェイス型(interface)」であると考えられます。 たとえば、

new Map();

は、Mapinterfaceであるためインスタンス化(new)出来ません。また、

new AbstractList();

は、AbstractListabstract classであるためインスタンス化(new)出来ません。

まとめ

エラーメッセージを見る限り、newの後に来ているものが「type(型)」だと認識できている訳なので、「cannot instantiate the abstract type」や「cannot instantiate the interface type」のようにかき分けてくれればいいのになぁ。

Effective Java 第2版
改訂第2版 Java言語プログラミングレッスン (上)
増補改訂版Java言語で学ぶデザインパターン入門

Eclipse | コメント:0 | トラックバック:0 | 編集

EclipseやVisual Studioでフォント設定時に非表示のフォントを表示する方法 このエントリーを含むはてなブックマーク

フォントが表示されない

Windows 7 でEclipseやVisual Studioのフォント設定を行っていると、フォントフォルダに存在するはずのフォントが表示されていないことに気がつきました。たしかに、条件に合わないフォントが表示されないなら分かるのですが、そういうわけではなさそうなのです。自分でフォントフォルダ(C:\Windows\Fonts)にフォントを追加したときに気がつきました。

フォントを表示する方法

表示するためには、フォントフォルダ(C:\Windows\Fonts)を開いて、非表示になっているフォント色が薄くなっているを右クリックして「表示」を押せばOKです。これで、他に問題がなければいままで表示されなかったフォントがEclipseやVisual Studioで設定できるようになります

非表示のフォントが表示されないのはよく分かるのですが、たとえば「Courier New」は非表示に設定されていたにも関わらず、Eclipseのとある設定では表示され、また別の設定では表示されませんでした。よくわかりません。

Windows | コメント:0 | トラックバック:0 | 編集

簡単なEclipse用コードテンプレートを作ってみた このエントリーを含むはてなブックマーク

Eclipseのコードテンプレートとは

Eclipseの.javaファイル編集中に、メソッドの内部で

syso

と入力した後に「Ctrl+Space」と入力すると、勝手に

System.out.println();

に変換されます。便利です。使ったことのある人も多いと思います。これがコードテンプレート機能です。

作るのは簡単

「Window>Preference」の「Java>Editor>Templates」の「New...」ボタンをクリックすると新しいテンプレートが作成できます。

今回作ってみたのは、「Overlay Weaver」で頻出するConfigurationクラスのsetterとgetterを生成するコードテンプレート。どういうコードが頻出なのかというと、

private int successorListLength = DEFAULT_SUCCESSOR_LIST_LENGTH;
public int getSuccessorListLength() { return this.successorListLength; }
public int setSuccessorListLength(int len) {
	int old = this.successorListLength;
	this.successorListLength = len;
	return old;
}

これが○○Configurationクラスに多くあるわけです。この頻出コードの中身を見ると、共通する部分ごとにまとめることができます。

private 型名 フィールド名 = 初期値;
public 型名 getメソッド名() { return this.successorListLength; }
public 型名 setメソッド名/(型名 フィールド名) {
	型名 old = this.フィールド名;
	this.フィールド名 = フィールド名;
	return old;
}

すると、結局指定すべきは「型名」「メソッド名」「フィールド名」「初期値」の4つだけということになり、その他の部分は使い回せると分かりますちなみに、フィールド名は「successorListLength」で、仮引数名は「len」でしたが、ここでは書きやすさを重視して、フィールド名に統一しました

あとは、これを参考にして、Eclipseテンプレートの書き方に従うだけです。

private ${field_type} ${name} = ${default_value};
public ${field_type} get${Name}() { return this.${name}; };
public ${field_type} set${Name}(${field_type} ${name}) {
	${field_type} old = this.${name};
	this.${name} = ${name};
	return old;
}

こんな感じ。本当は、Templateはもう少し工夫するための機能があるのですが、使い方がよく分からなかったのと、ちょっとやってみたけどあまり良くならなかったので断念して元に戻してしまいました。テンプレートが無いときよりかは楽が出来てミスも減るということで小文字を先頭だけ大文字に変換とか出来たら良かったのですが出来なさそうです

Eclipseで学ぶはじめてのJava
Eclipse PDTではじめるPHPプログラミング入門
Eclipse 3.4 プラグイン開発 徹底攻略

Eclipse | コメント:0 | トラックバック:0 | 編集
<< NEW  | HOME |  OLD >>