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

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

投稿者投稿内容
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2009-03-26 17:59
引用:

基本という言葉実に不可解ですね。
どういう風に勉学すると基本が分かるようになるのでしょうか。


dejavu氏の年齢はわかんないけど少なくとも高校生以上の年齢だよね?
小学校中学校はどうやって勉強したの?同じ要領で覚えるだけだと思うんだけどなあ。
算数の公式なんかも記憶と理屈の世界だし。コーディングもいっしょ。
引用:

《余談》
今感じたんですけど、ここって他人のスレの編集とかもできるのでしょうか。
今、あしゅさんのスレに対して間違えて編集をクリックしたら開いたのでビックリしました。


パスワードもわからないのにどうやって編集するの?普通に考えてみようぜ。
それと「感じたんですけど」ってえろおかしくないかね。
ふつうに「思ったんですけど」が正しいと思うんだけど。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2009-03-26 18:39
ジェネリクスの基礎から説明するのはこの@ITの会議室の手に余るところです。ジェネリクスについて解説しているページを探して基礎からはじめるほうが手っ取り早いでしょう。

EnumerationはJavaの初期からあるインターフェースですが現在ではあまり使われていません。
引用:

http://java.sun.com/javase/ja/6/docs/ja/api/java/util/Enumeration.html
新しく実装する場合は、Enumeration ではなく Iterator を使うようにしてください。


とあるとおり、Iteratorを使用しましょう。

JavaSE5.0のリリースも2004年のことではありますが、まだまだ1.4での開発も多くされているようですね。5.0ではいろいろと機能が追加されましたが、その差分を学びたいのでしたらJava 2 Standard Edition 5.0 Tiger―拡張された言語仕様についてがお勧めですが、入手が難しければプログラミング言語Java 第4版を読むことになるでしょうか。
hekigyoku
会議室デビュー日: 2008/12/16
投稿数: 17
投稿日時: 2009-03-26 21:08
http://www.javainthebox.net/laboratory/J2SE1.5/LangSpec/Generics/Generics.html

ここがお勧めかな。(勝手にリンク張っていいのかわからんが)

http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/Enumeration.html

ここに
インタフェース Enumeration<E>

こう書いてあるんだから、EnumerationはGenerics使っているって分かるでしょ?。
dejavu
ベテラン
会議室デビュー日: 2009/03/13
投稿数: 71
投稿日時: 2009-03-26 23:00
できれば、Kazukiさんとnagiseさんとぶさいくろうさんへ別々にスレ書きたかったんですけど、無理みたいですね。
私は超ど素人プログラマで、どれだけJava言語の知識を増やしても今の年齢ではプログラマの職にはつけない年齢です。
なので、主に大規模プロジェクトなどで使用されるJava言語を学んだからと言って、単なる私自身のJava言語のプログラム知識が増すだけで、それ以上の何ものでもありません。
その上で
Kazukiさんへ、
いつもいつもお世話になっています。
URLの本見ました。欲しくなりました。
以前、私がプログラマを目指していた頃には『モア・サーブレット&JSP』または『コア・サーブレット&JSP』なる本がありまして。
Java言語の知識を得るために重要な内容が書かれていました。
大事なところには赤線など引いていましたね。
残念ながら、途中でプログラマという職種を諦めざるを得ず、それと同時に読まなくなってしまいましたが、現レベルの段階を突破した暁にはもう1度目を通したい、と思っています。
それと、これは私の悪い癖なのですが、欲しいと思った本を入手するとそれだけで満足してしまい、後は本棚へ、という事が多々あり、今現在Javaをやり始めてみて、もう既に古くなってしまってただのいらない本になってしまったという本が4、5冊あります。
本当に勿体無い事をしました。
あの頃は人生をプログラマに賭けていましたので。
Kazukiさんのアドバイスを聞くたびに私自身も近づきたい、と思って私なりに努力しつつ頑張っています。
今回も大変参考になりました。

nagiseさん、アドバイスありがとうございます。
引用:

ジェネリクスの基礎から説明するのはこの@ITの会議室の手に余るところです。ジェネリクスについて解説しているページを探して基礎からはじめるほうが手っ取り早いでしょう。
EnumerationはJavaの初期からあるインターフェースですが現在ではあまり使われていません。


私が今勉強している本が私自身がプログラマを目指していた頃の年代のものなので、こういった違いのようなものが出てきてしまうのでしょうね。
ITは常に進化している、という事ですかね。
『Java 2 Standard Edition 5.0 Tiger』物凄く欲しいですね。
今幾つかの書店で検索してみましたが、残念ながらどこも品切れでした。
新品はどうしても入手は困難でしょうね。
中古本はあまり好きではないんですよね。
今、品切れの本がPDF版で売っていたりするんですよね。
1つ気付いたのは、自分が購入する本とKazukiさんやnagiseさんが選ぶ本に大きな違いがある事ですね。
こういうのは参考になりますし、勉強になりました。

ぶさいくろうさんへ、手厳しいお言葉頂戴しました。
引用:

パスワードもわからないのにどうやって編集するの?普通に考えてみようぜ。
それと「感じたんですけど」ってえろおかしくないかね。
ふつうに「思ったんですけど」が正しいと思うんだけど。


全く本当におっしゃるとおりです。
大変失礼しました。

[ メッセージ編集済み 編集者: dejavu 編集日時 2009-03-26 23:29 ]
dejavu
ベテラン
会議室デビュー日: 2009/03/13
投稿数: 71
投稿日時: 2009-03-26 23:07
hekigyokuさん、アドバイスありがとうございます。
最初の方に書いたのですが、ジェネリクス自体昨日知ったものでして、許して下さい。
もし知らなかったら、今頃どうしていたでしょう。
全然対応できずに淡くってましたね、多分。
これからは細部までよく目を通すようにします。
未記入
大ベテラン
会議室デビュー日: 2008/02/07
投稿数: 115
投稿日時: 2009-03-27 00:34
これってジェネリクスなんですかねえ。少なくとも「基本」と言い切れるような単純な話ではないと思います。

引用:

ここに インタフェース Enumeration<E>
こう書いてあるんだから、EnumerationはGenerics使っているって分かるでしょ?。


それは、あなたの見ている javadoc が新しいから、そう書いてあるんでしょう? 古い javadoc にはなんて書いてあるのかな? そして、今問題になっている ServletRequest インタフェースはいつ定義されたものなのかな? ServletRequest はジェネリクスを使っているのかな?

実際のところ、ServletRequest はジェネリクスを使っていないんですよね。だから、後方互換性と現在書いているコードを Java 5.0 以上に準拠させるため、型安全性のない Enumeration<?> を使わないといけないという状態になっています。

これはジェネリクスの目指すものや本質ではなくて、Java のジェネリクス実装の都合による制限事項なんじゃないかな。スレ主があちこちに String を書いて試してみたことは評価すべきことだと思います。ジェネリクスを学んで「型安全性が提供される」という意識があったから、String にこだわったのでしょう。これはとても良いこと。

それに対して、? を使うことを基本だとか当たり前のことのように言うのはいかがなものかと思います。そういっている人たちは、? を使うべき状況、使わなければいけない理由をちゃんと説明できるんですかね。

dejavu
ベテラン
会議室デビュー日: 2009/03/13
投稿数: 71
投稿日時: 2009-03-27 04:59
引用:

これってジェネリクスなんですかねえ。少なくとも「基本」と言い切れるような単純な話ではないと思います。


やはりジェネリクスについてもっと勉強し、理解を深めないといけないですね。
私としては新しい技術だけを教えてもらっただけの知ったかジェネリクスなので、この文章には大変興味を引かれます。
引用:

引用:

ここに インタフェース Enumeration<E>
こう書いてあるんだから、EnumerationはGenerics使っているって分かるでしょ?。


それは、あなたの見ている javadoc が新しいから、そう書いてあるんでしょう? 古い javadoc にはなんて書いてあるのかな? そして、今問題になっている ServletRequest インタフェースはいつ定義されたものなのかな? ServletRequest はジェネリクスを使っているのかな?


一理ある意見ですね。
引用:

実際のところ、ServletRequest はジェネリクスを使っていないんですよね。だから、後方互換性と現在書いているコードを Java 5.0 以上に準拠させるため、型安全性のない Enumeration<?> を使わないといけないという状態になっています。


非常に奥深い話ですね。というよりもはや次元の違う話になるかもしれませんね。
私はまだEunmeration<?>の?の意味をまだ理解していないのですが、自分の足り無い知識だけで書くとまた恥をさらす可能性があるのですが、ワイルドカードではないか、と思うのですが、どうなんでしょうか。
また非難轟々にならない事を祈ります。
引用:

これはジェネリクスの目指すものや本質ではなくて、Java のジェネリクス実装の都合による制限事項なんじゃないかな。スレ主があちこちに String を書いて試してみたことは評価すべきことだと思います。ジェネリクスを学んで「型安全性が提供される」という意識があったから、String にこだわったのでしょう。これはとても良いこと。
それに対して、? を使うことを基本だとか当たり前のことのように言うのはいかがなものかと思います。そういっている人たちは、? を使うべき状況、使わなければいけない理由をちゃんと説明できるんですかね。


非常に考え深いものがありますね。
わたなべ
大ベテラン
会議室デビュー日: 2007/12/09
投稿数: 123
お住まい・勤務地: 札幌
投稿日時: 2009-03-27 09:42


[ メッセージ編集済み 編集者: わたなべ 編集日時 2009-04-07 12:37 ]

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