• ベストアンサー

Enumeration のインスタンス化

Vector vの中身をEnumeration eに移す際に Enumeration e = v.Elements(); とするとokなのに、 Enumeration e = new Enumaration(); e = v.Elements(); とするとEnumeration はabstractであるとエラーになるのが不思議です。どちらも同じ事をしているように見えてしまうので。。。この2つの違いは何ですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

Enumeration は「次々に要素を列挙できる何かの総称」なので具現化できません。 Enumeration e = v.Elements() は具体的なベクトル v の要素の集合を変数 e が指しているということです。 質問文の後の例でも、プログラマは同じことを意図しているのでしょうけど、コンパイラにはわかりません。new Enumeration() した時点で NG。 Java は変数すべてが参照型だからその辺わかりにくいのかも。 あるいは単純にポリモーフィズムが難しいのか?

incd
質問者

お礼

変数eが指している、というところが大事なんですね。ありがとうございました。

その他の回答 (1)

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.2

すでに答えは出ていますが、「Enumarationはabstractなのでnewできない」 という理由です。 だから、newを使わずに宣言だけして、 Enumeration e; e = v.Elements(); とすればいいのです。これなら問題ありません。

incd
質問者

お礼

何となく分かったような気がします。。。 ありがとうございました。

関連するQ&A