K007aaa k007aaa = (K007aaa) container.getComponent(K007aaa.class);
インスタンス化は通常newがつくため意味がわかりません。
なぜ、前に引数?があるかもわかりません。
クラスも引数?になる?
いろいろわかりません。
ご教示下さい。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
答えは tkturbo さんの方を見てもらうとして、なぜこんなことをするのだろうか、ということですが。
container
は、たとえばさまざまなコンポーネントから構成されるもので、そのコンポーネントはそれぞれのクラスで定義されていて、それらはベースクラスの Component
クラスの派生になっているか、Component
インタフェースを継承しているかするのでしょう。コンポーネントクラスはいろいろ増えることもあるので、直接コンストラクタを使ってインスタンスを作るのではなく、container.getComponent()
というメソッドを介して各クラスの新規インスタンスを作るのでしょう。統一的なメソッドを介して新規コンポーネントクラスを取得するという構造にしておくことで、たとえば設定ファイルに記された共通の初期化などを getComponent()
メソッドで行うことができます。コンポーネントクラスごとに必要な初期化なども getComponent()
に隠蔽できます。
で、getComponent()
はすべてのコンポーネントクラスを返す可能性があるので、通常は
java
1Component k007aaa = container.getComponent(K007aaa.class);
のように Component
抽象クラス(もしくはインタフェース)のインスタンスとして受けとります。このとき、変数 k007aaa
が指し示すオブジェクトの中身は K007aaa
クラスのインスタンスですが、k007aaa
の型は Component
なので K007aaa
クラスに特有のメソッド (Component
にはないけれど K007aaa
にはあるメソッド)は使えないわけです。場合によっては生成されたクラスに特有なメソッドを使いたい場合もあるわけです。そういうときには明示的に
java
1K007aaa k007aaa = (K007aaa)container.getComponent(K007aaa.class);
とキャストします。
投稿2016/03/14 09:37
総合スコア2468
0
「container.getComponent(K007aaa.class)」
↑「container」インスタンスの「getComponent」というメソッドを実行しています。
メソッド引数が「K007aaa.class」なので、「java.lang.Class」というクラスのインスタンスが渡されていることになります。
先頭の「 (K007aaa)」は「getComponent」メソッドの戻り値を型変換しているのです。(こういうのをCastといいます。)
おそらく、「container.getComponent」の戻り値の型は「java.lang.Object」型なんじゃないですかね?
投稿2016/03/14 09:03
総合スコア5572
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。