• ベストアンサー

Javaでの型宣言について

はじめまして。 初投稿となります。 最近Javaの学習をはじめたのですが、 疑問があります。 Javaでは型の宣言を曖昧にすることってできますか? ActionScriptで例えると var obj:*; というように、 明示的に型宣言するのではなく、 汎用的に変数を扱うことはできますか? ご教授お願いいたします。

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

  • ベストアンサー
noname#94983
noname#94983
回答No.2

できない。 Javaは、「静的型付け」といって、コンパイル時にすべての値の型が確定していなければならない。例に挙げたようなものは「動的型付け」といって、実行時に型を確定して動くようなもの。Javaのような静的型付けの言語では、型をあいまいにしておくことはできない。

JoziKaijin
質問者

お礼

> Javaは、「静的型付け」といって、コンパイル時にすべての値の型が確定して > いなければならない。例に挙げたようなものは「動的型付け」といって、実行時 > に型を確定して動くようなもの。Javaのような静的型付けの言語では、型をあ > いまいにしておくことはできない。 すみません。 私の勉強不足でした。 もっとJavaのことを理解した上で 学習を進めようと思ういます。 ありがとうございました。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

純粋に「変数に値を格納するだけ」でいいなら #1 でいわれるようにクラスObject を使えば OK. 今だとボクシングが自動で行われるので値型に対しても使える. ただし「格納するだけ」なので, その値を使って実際に何か処理をしようというときには「実際の型」が必要になるので, 毎回キャストすることになります.

JoziKaijin
質問者

お礼

> 純粋に「変数に値を格納するだけ」でいいなら #1 でいわれるようにクラス > Object を使えば OK. 今だとボクシングが自動で行われるので値型に対しても > 使える. > ただし「格納するだけ」なので, その値を使って実際に何か処理をしようというと > きには「実際の型」が必要になるので, 毎回キャストすることになります. 今は格納する際に疑問に思い、ここへ質問しました。 実際処理をするときが来ましたら、 毎回キャストするということを覚えておきます。 ありがとうございました。

  • 20203
  • ベストアンサー率60% (3/5)
回答No.1

Objectクラスはすべてのクラスのスーパー(上位)クラスなので, Object obj; と宣言すれば変数objはどんな型へも参照することができます.

JoziKaijin
質問者

お礼

> Objectクラスはすべてのクラスのスーパー(上位)クラスなので, > Object obj; > と宣言すれば変数objはどんな型へも参照することができます. そうなんですか。 Object型は万能なんですね。 ありがとうございます。