サーブレット、JSPでアプリ開発の学習中に疑問に思ったことを書きます。
サーブレットで生成したデータをJSPに連携させるときに、
例(Humanはクラスです)
Human h = (Human)request.getAttribute("human")
のような書き方をしてデータの取得を行います。
この”get.Attribute()”で取得するのはObject型になっています。
ここで疑問に思ったことが、HumanというクラスのObjectでキャストしていることです。
なぜObject型で取得した値をObjectにキャストしているのか分かりませんでした。
調べて何となく自分なりに答えを出したことを書きます。(間違っているかもしれません。)
クラスで作成したObjectはObject型を継承した子クラスだそうです。なのでクラスのObjectを生成すると、そのクラス固有のObjectとなるので
("Human h = new Human();)
#hはHumanクラスのObject→つまりHuman型となります。
だからObject型で取得した値をHuman型でキャストする必要があるらしいです。
これは普段使っていたキャストと少し似たところを見つけたのですが、
数値型のキャストの場合、(Double型→int型)
大きいデータ型から小さいデータ型に変換するときにキャストを行います。
Object型も一緒で、(Object型→Human型)
親クラスであるObject型を継承した子クラスHuman型に変換するときにキャストが必要であると考えられると思いました。