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

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

ブログ内検索

スポンサーサイト このエントリーを含むはてなブックマーク

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 | 編集

Javaのraw type警告を消す方法メモ このエントリーを含むはてなブックマーク

raw type 警告

raw typeというのは、ジェネリクス型(型変数を持つ型)の<T>のような型変数部分を取り除いた型のことを言います。たとえば、「Set」は「Set<V>」のraw typeです。

そして、基本的にraw typeは、Java 5より前のバージョンとの互換性のために存在しているイメージで、利用しないことが推奨されます。なので、うかつにraw型を利用すると、次のような警告が出ますここでは、Classクラスを用いた場合です

Class is a raw type. References to generic type Class should be parametarized

日本語だと

Classはraw型です。総称型Class<T>への参照は、パラメーター化する必要があります

ここでは、Eclipseを利用していて、利用しているフレームワークなど、自分が書いたコード以外の部分に警告が表示されている状況を想定します。

Eclipseの言うとおり、アノテーションを付ける

Eclipseを使っていると、修正候補として

Add @SuppressWarnings 'rawtypes' to 'clazz'

のように表示されます。これの通りに修正すれば

Class clazz = ...

が、次のようになります。

@SuppressWarnings("rawtypes") Class clazz = ...

もしフレームワーク内にこのような修正箇所が大量にある場合、何かやる気が起こりませんし、追加する量が多いのに加えて、読むときに邪魔です。そもそもフレームワークに追記すること自体やりたくないです。

総称型にする

総称型を使わないからエラーが出るので、総称型を使えばいいわけです。ということで、シンプルには

Class

と書いてある部分を徹底的に

Class<適切な型名>

にすればいいわけです。そして、徹底的にそれをやるとどうなるかというと、

Cannot create a generic array of Class<型名>

配列でraw typeが使われていると、この方法ではまた別のエラー、そしてこちらはコンパイルできないエラーになってしまいます。

<?>で総称型にする

もっとシンプルに、<?>を問題のraw typeの後ろに付けて総称型にしてしまう手もあります。これを使うとGeneric Type配列が作成できないことを回避できるわけです。なので、配列のところだけ<?>と書いておけばいいことになります。

しかし、それでもやはりソースコードを書き換えたくない。というか、とにかく警告が邪魔なわけです。

Eclipseの警告を表示する機能を止める

警告表示自体をEclipseの設定によって抑制すればソースコードを書き換えることなく、大量の警告を止めることが出来ます。

Window>Preferences>Java>Compiler>Errors/Warnings>Generic types>Usage of a raw type」でWarningをIgnoreにすればOK。

また、設定画面の「Configure Project Specific Settings」を利用すれば、特定のProjectに対してのみこの設定を適用することも出来ます。

まとめ

Eclipseの警告を抑制する方法をメモしたかっただけです

スポンサーサイト
Eclipse | コメント:0 | トラックバック:0 | 編集

Javaジェネリクスに関する資料メモ このエントリーを含むはてなブックマーク

Javaのジェネリクスに関して調べている最中に見つけた文章の中で、メモしておきたいものをまとめました。 ものすごく怪しい説明がweb上にある中で、それなりに参考になりそうな資料に絞りました。

全体的に、「Javaのジェネリクスが何かわかるし、書き方も分かるけど、使いどころの判断が付かない」人が、いろいろ知ることで判断付けられるようにしていこうって感じ。ジェネリクスを知らないとなると読むのは大変かも。

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

degreeの意味 このエントリーを含むはてなブックマーク

degreeの意味は多い

degree」という単語には、辞書や「degree 意味」などで検索してみると分かるように、ものすごくたくさんの意味があります。つまり、文脈によってたくさんの意味に訳し分ける必要があるわけです。

しかし、とある文章を読んでいるときに出てきた「degree」の意味が辞書に書いてあるどの意味でも当てはまらないことがありました。インターネットで「degree」だけを頼りに検索しても、すぐには見つけられませんでした。そこで、「degree」という単語の意味についてメモします。特に、「degree」は数学が関係する文脈に良く登場します

degreeの定番訳語「次数」

数学的文脈、それに関連して情報科学的文脈では、degreeの訳語として広く「次数」という単語が使われます。しかし、次数自体にたくさんの意味があります。裏を返せば、数学にたとえば私が分からなかったのは次の意味でした。そして、私が分からなかったのは次のグラフ理論におけるdegreeでした。

グラフ理論における「次数

グラフにおける、一つの頂点(ノード)から出ている辺(線)の数を「次数=degree」と言います。有向グラフの場合、その向きによって入次数(indegree)、出次数(outdegree)という言葉も使われます。(c.f. 次数(グラフ理論) Wikipedia)

使われ方はこんな感じ

  • degree(=valency)→次数
  • indegree→入次数
  • outdegree→出次数
  • degree of sequence→次数列
  • degree of sequence problem→次数列問題、与えられた次数列から具体的なグラフを作る問題
  • degree of graph→グラフの次数(グラフの全ノードのdegreeが等しいとき=正則なグラフ)
  • degree sum formula→全ノードの次数の和の半分が辺の総数であるという公式
  • a vertex with degree n→次数nの頂点
  • degree of a vertex→頂点の次数

degreeの訳

「degree of ○○」は次数ではなく「○○度」と訳されることも多いので、「度」という訳語にも注意。degree offreedom→自由度 とか。

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

第二十一回 P2PSIP 勉強会で話をします このエントリーを含むはてなブックマーク


本番用スライドをアップロードしました(2010/09/19)
変更を加えて再アップロードを行う予定です。

本番用スライド


以下、もともとの本文。


第二十一回P2P SIP勉強会

明日9/19(日) 14:00- 東工大にて行われる「第二十一回P2P SIP勉強会」において「柔軟な経路表に基づくOverlayNetworkの設計と応用」というタイトルで話をします

話の主軸はクラウドコンピューティングコンペティション2010で行ったライブデモのために構成したアルゴリズムです。

今回は、話をする前に、どんな話をするかをあらかじめスライドにまとめました。当日もこのスライドをだいたい利用すると思われます。

勉強会の予定が分かるスライド

勉強会で話す内容が分かるスライドがこちら。すでに来る予定の方も目を通しておいてもらえると助かります。

こんな話が聞けます!

これを見て興味が出た人は是非。このスライドを見ただけじゃ分からないいろいろを話す予定です。

このスライドには、評価などがないので、下に参考資料を挙げておきます。

その他参考資料

柔軟な経路表(Flexible Routing Table, FRT)

まず、元の論文「柔軟な経路表によるオーバレイネットワークの設計(情報処理学会OS研究会)」があります。

また、DICOMO2010というシンポジウムでの発表スライドがあります。

DICOMO2010 Flexible Routing Table(FRT) 2010/07/09(優秀プレゼンテーション賞、優秀論文賞)
View more presentations from did2.

LFRT(Labeled Flexible Routing Table)

こちらに関しても元の論文「オーバレイネットワークにおけるグループ間通信抑制手法(情報処理学会OS研究会、SWoPP金沢2010)」があります。

また、そのときの発表スライドもあります。

SWoPP2010 LabeledFRT (2010/08/03)(最優秀学生発表賞)
View more presentations from did2.

明日へ向けて

当日は詳しくアルゴリズムを説明したいのですが、まだ詳しいアルゴリズムを説明できるスライドが存在しないのでそれを作りつつ、デモの準備を行いたいと思います。当日はよろしくお願いします。

このスライドを見て何かあったり、これが聞きたいから準備しておけよってことがあったら気軽にtwitterに投げてください。間に合う範囲で努力します。

イベント | コメント:0 | トラックバック: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 | 編集
 | HOME |  OLD >>
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。