Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 >  掲示板 >  掲示板(ジェネリクスメソッドの警告)
閲覧数:476
掲示板(ジェネリクスメソッドの警告)
名前
題名 ジェネリクスメソッドの警告
質問内容

質問を評価する
(0ポイント)
あるクラスに以下のようなメソッドを定義しました。
▼メソッド
public <T> T getMiddle(T[] tmp) {
    return tmp[tmp.length/2];
}

すると以下のような警告が表示されます。
▼警告
The type parameter T is hiding the type T
add SuppressWarnings("hiding")

メソッドをstaticにすれば消えるのですが、これはそもそもなぜ警告が
出てしまうのでしょうか。
また、なぜstaticにすることで警告が消えるのかが理解できておりませ
ん。

大変お手数ですが、ご教示いただけますでしょうか。
質問日時 2014-01-21 21:57:12
名前
回答内容

回答を評価する
(30ポイント)
T が既に使われてるからでしょう。
例えば
class A<T> {
public <T> T getMiddle(T[] tmp) {
    return tmp[tmp.length/2];
}}
ならそうなります。static ならクラスの T とは衝突しません。
回答日時 2014-01-21 22:30:33
名前
匿名
回答内容

回答を評価する
(0ポイント)
使っていました!!
理解しました!
ありがとうございます!
回答日時 2014-01-21 22:32:46
名前
匿名
回答内容

回答を評価する
(0ポイント)
相称型は 何文字でもいいんだがな・q・
回答日時 2014-01-22 08:11:31
名前
匿名
回答内容

回答を評価する
(0ポイント)
一文字かどうかと今回の話には関連がなさそうだが。
回答日時 2014-01-22 09:25:09
名前
匿名
回答内容

回答を評価する
(0ポイント)
まあ、26までしか使えないと思ってるひともいることだし。

多分このこは T しか使ってはいけないとおお持ってる気がする。
回答日時 2014-01-22 10:52:44
名前
匿名
回答内容

回答を評価する
(0ポイント)
このあたりも、Javaの標準ライブラリを読むだけでも勉強
になるな。
2文字以上使ってるものは見た覚えがないが、ジェネリッ
クス対応クラスのソースを読めばTだけでなくEやらVや
ら、状況に応じていろいろ使っているのがすぐに分かる。
回答日時 2014-01-31 00:26:42
名前
匿名
回答内容

回答を評価する
(0ポイント)
>>  2014-01-31 00:26:42

http://code.google.com/p/sastruts-extension/source/browse/trunk/sastruts-extension-apps/src/main/java/jp/ardito/seasar/struts/apps/convention/service/AbstractService.java?r=52
回答日時 2014-01-31 13:46:36
名前
匿名
回答内容

回答を評価する
(0ポイント)
単語を丸々大文字で使うと、定数とごっちゃになるな。
回答日時 2014-01-31 16:06:25
回答内容を入力し、「確認」ボタンをクリックしてください。
ログインしていません。ログインしなくても回答はできますが、ログインすると、質問・回答の管理、更新があった場合のメールでの通知を受けることができます。 ユーザIDをお持ちでない方は「ID登録」からユーザIDの登録を行ってください。
氏名 匿名
回答内容
 



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道