重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

Vector vの中身をEnumeration eに移す際に

Enumeration e = v.Elements();

とするとokなのに、

Enumeration e = new Enumaration();
e = v.Elements();

とするとEnumeration はabstractであるとエラーになるのが不思議です。どちらも同じ事をしているように見えてしまうので。。。この2つの違いは何ですか?

A 回答 (2件)

Enumeration は「次々に要素を列挙できる何かの総称」なので具現化できません。



Enumeration e = v.Elements() は具体的なベクトル v の要素の集合を変数 e が指しているということです。

質問文の後の例でも、プログラマは同じことを意図しているのでしょうけど、コンパイラにはわかりません。new Enumeration() した時点で NG。

Java は変数すべてが参照型だからその辺わかりにくいのかも。
あるいは単純にポリモーフィズムが難しいのか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/09/16 05:07

すでに答えは出ていますが、「Enumarationはabstractなのでnewできない」


という理由です。
だから、newを使わずに宣言だけして、

Enumeration e;
e = v.Elements();

とすればいいのです。これなら問題ありません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/09/16 05:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!