- PR -

list()メソッドによる型の安全性チェックを解決したい

1
投稿者投稿内容
Ier
常連さん
会議室デビュー日: 2006/02/23
投稿数: 33
投稿日時: 2007-09-23 19:32
Hibernateを使用して開発しているのですが、

Session session = sessionfactory.openSession();
List<HOGE> list = session.createCriteria(HOGE.class).list();

という部分で、session.createCriteria(HOGE.class).list();部分に
型の安全性に関する警告が出てしまいます。

警告を解決するために、list()の返す型をList<HOGE>と指定できれば
問題は解決できると考えているのですが、うまくいきません。
この問題を解決できる方法がありましたらご教授願いますm(_ _)m
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2007-09-23 20:58
引用:

Ierさんの書き込み (2007-09-23 19:32) より:
警告を解決するために、list()の返す型をList<HOGE>と指定できれば
問題は解決できると考えているのですが、うまくいきません。


たとえば、
コード:
List<HOGE> foo() {
    // ...
    return session.createCriteria(HOGE.class).list(); 
}


のように List<HOGE> を返すメソッドを作れば、foo を呼ぶ側では警告は出なくなるでしょう。今度はメソッド foo の中で警告が出ますが、気にしないことです。

引用:

Ierさんの書き込み (2007-09-23 19:32) より:
この問題を解決できる方法がありましたらご教授願いますm(_ _)m


結局、完全には解決はできないでしょう。
eclipse のコンパイラーの設定のどれかの項目で、この警告を無視して、この問題の存在を忘れるしかないでしょう。

--
unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86}
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-09-23 22:39
unibon氏のような型解決をするメソッドを作ったうえで
該当メソッドにアノテーションで警告抑制する手法が無難です。
全体のコンパイル警告を無効化してしまうのはリスクがありますからね。
Ier
常連さん
会議室デビュー日: 2006/02/23
投稿数: 33
投稿日時: 2007-09-23 22:59
unibonさん、nagiseさん返信ありがとうございます。
list()の警告を解決することは無理のようですね^ ^;
「定義後もGenericsの型指定できるのか?」と気になっていたので、
疑問が解けました。ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)