@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

Enumerationクラスとジェネリクスについて

投稿者投稿内容
dejavu
ベテラン
会議室デビュー日: 2009/03/13
投稿数: 71
投稿日時: 2009-03-26 08:05
java.util.*パッケージにEnumerationクラスというのがありますよね。
それであまり良く理解していないのですがJava5からジェネリクスという機能ができましたよね。
これはコピペですが、
ジェネリックスというのは、「<」と「>」で囲んだ型名をクラスやメソッドに付けることによって、汎用的なクラスやメソッドを特定の型に対応づける機能です。
とあります。
以下にソースコードを貼り付けます。(jsp)

<%@ page import="java.util.*" %>
<html>
<head>
<title>入力データをまとめて取得する</title>
</head>
<body>
<%
//入力データをまとめて取得する
Enumeration e = request.getParameterNames();

//取得した値を表示する
while (e.hasMoreElements()) {
String s = (String)e.nextElement();
  ↑でString型にキャストしてるんですけどEnumerationの部分も変えないと警告は消えません。
out.println("<p>" + s + ":" + request.getParameter(s));
}
%>
<form action="<%=request.getRequestURI()%>" method="post">
<input type="text" name="T1">
<input type="text" name="T2">
<input type="text" name="T3">
<input type="submit" value="送信する">
</form>
</body>
</html>

自分はジェネリクスという機能を昨日知りました。
それからEnumerationとジェネリクスでググッてみました。
残念ながら、今回はヒットしませんでした。
Enumerationだけでも今回のプログラムと類似したモノは見つかりませんでした。
Enumeration<String>でEnumarationの警告は消えますが、でも、今度はrequest.getgetParameterNames();の方が警告になり、どこに<String>を挿入してもダメです。
こういう場合どうしたらいいのでしょうか。
アドバイスどうぞ宜しくお願い致します。
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2009-03-26 09:25
引用:

dejavuさんの書き込み (2009-03-26 08:05) より:
アドバイスどうぞ宜しくお願い致します。


基本から勉強し直す。

# 「テレビにちゃんと光さしてるの?」「さしてるよ」
# 基本を理解していない人にアドバイスしようとしてもこんなもの
dejavu
ベテラン
会議室デビュー日: 2009/03/13
投稿数: 71
投稿日時: 2009-03-26 15:43
引用:
基本から勉強し直す。


ちょっと一言。
ただ基本から勉強し直す、と書かれていても漠然としていて、5W1Hって感じです。
意味お分かりになるでしょうか。
引用:

# 「テレビにちゃんと光さしてるの?」「さしてるよ」
# 基本を理解していない人にアドバイスしようとしてもこんなもの


さて、これを読むに、さぞやバカにされているのでしょうね。
何故か??? それはジェネリクスという言葉を出したからでしょうかね。
確かに、ジェネリクスで取り上げられているのはArrayListやList関係なので的を大きく外した質問をしているのかもしれません。
そう考えてみると、大っぴらにお恥ずかしい質問をしているのでしょうね、多分。
根本的にジェネリクスという機能の使い道を本当はあまり知りません。
ただ型がraw型だったので、共通するのかな、と勝手に思い込んでいました。
以上を踏まえた上でアドバイスを頂ける方がいましたら、宜しくお願い致します。

[ メッセージ編集済み 編集者: dejavu 編集日時 2009-03-26 17:05 ]
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2009-03-26 16:40
この場合は次のようにすれば警告は出なくなります。
Enumeration<?> e = request.getParameterNames();

ジェネリクスの警告を出ないようにもできます。
@SuppressWarnings("unchecked")
未記入X
大ベテラン
会議室デビュー日: 2005/05/19
投稿数: 136
投稿日時: 2009-03-26 16:48
引用:

dejavuさんの書き込み (2009-03-26 15:43) より:
基本から勉強し直す。
引用:

# 「テレビにちゃんと光さしてるの?」「さしてるよ」
# 基本を理解していない人にアドバイスしようとしてもこんなもの


さて、これを読むに、さぞやバカにされているのでしょうね。


全く、バカになどしてはいないでしょう。

基本を理解せずに目先の警告を基準にコードいじくって、理解したつもりになったとしても、
やることが少し変わる度に、似たような質問を投稿することになるのではないでしょうか。

「基本から勉強し直す」は目先だけでなく、少し先も見据えた実に適切なアドバイスだと思います
dejavu
ベテラン
会議室デビュー日: 2009/03/13
投稿数: 71
投稿日時: 2009-03-26 17:36
引用:

この場合は次のようにすれば警告は出なくなります。
Enumeration<?> e = request.getParameterNames();


あしゅさん、アドバイスを頂きありがとうございます。
でも、冬寂さんの言うとおりという事になるのでしょうか。
これは普通に販売されているJavaの本に載っているのですかね。
この前の質問でTomcatの質問をしたときのように解決したけど、正直意味が不明です。
これもジェネリクスなのでしょうか。
それを訊く事が基本を知らない事なのでしょうかね。
深く深く反省します。
自分が知っている『?』の使い方は条件式で使う例えば、
条件 ? 文 : 文 ;
という条件式の際に使うときですね。
a = (i > 0) ? 10 : 20;
みたいな感じです。

引用:

ジェネリクスの警告を出ないようにもできます。
@SuppressWarnings("unchecked")


今調べました。
アノテーションと呼ばれるものですね。
これを挿入するのではないかな、とは思いましたが、勉強になります。
でも、どういう風に勉強するとこういう事が分かるようになるのでしょうか。
普通の本には掲載されていない気がするのですが……。
知識不足を重々感じさせられました。

[ メッセージ編集済み 編集者: dejavu 編集日時 2009-03-26 20:12 ]
dejavu
ベテラン
会議室デビュー日: 2009/03/13
投稿数: 71
投稿日時: 2009-03-26 17:45
引用:

# 「テレビにちゃんと光さしてるの?」「さしてるよ」
# 基本を理解していない人にアドバイスしようとしてもこんなもの


引用:

さて、これを読むに、さぞやバカにされているのでしょうね。


引用:

全く、バカになどしてはいないでしょう。

基本を理解せずに目先の警告を基準にコードいじくって、理解したつもりになったとしても、
やることが少し変わる度に、似たような質問を投稿することになるのではないでしょうか。

「基本から勉強し直す」は目先だけでなく、少し先も見据えた実に適切なアドバイスだと思います



色々な方々へ、誠にすいません。かなり被害妄想入っているので。
未記入Xさんのおっしゃる事いちいち最もです。
未記入Xさんの言葉を否定できないのですから。
基本という言葉実に不可解ですね。
どういう風に勉学すると基本が分かるようになるのでしょうか。
Kazuki
ぬし
会議室デビュー日: 2004/10/13
投稿数: 298
投稿日時: 2009-03-26 17:58
近道は、お金を払って有料の教育コースを受けるのだと思います。

独学でとなると、Javaの(JSP/Servletではない)入門的な本を一冊買って読む。
マニアックなことを知りたくなったら
http://www.amazon.co.jp/Java%E8%A8%80%E8%AA%9E%E4%BB%95%E6%A7%98-%E7%AC%AC3%E7%89%88-Java-%E3%82%B8%E3%82%A7%E3%83%BC%E3%83%A0%E3%82%BA-%E3%82%B4%E3%82%B9%E3%83%AA%E3%83%B3/dp/4894717158
みたいな本を買って読む。

その過程で知らないことがあったら、それについて言及しているネット上の記事や
本を読む。
それでもわからなかったら別のものを読む。
ということの繰り返しをしてきました。

これを繰り返していくと、色々調べる過程で、別の知識も得られて
だんだんと厚みを増していきます。

アイティメディアの提供サービス

ホワイトペーパー(TechTargetジャパン/閲覧には会員登録が必要です)

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