重要なお知らせ

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

電子書籍の厳選無料作品が豊富!

いつも参考にさせて頂いています。
表題の件なのですが、ソースで説明しないと質問しずらいのでソースで質問させて頂きます。

*********************************
public class AAA {
public class BBB {
Map map = new HashMap();
public BBB() {
map.put("key", obj);
}
public Map getMap() {
return map;
}
}
}

以下JSP内にて---------------------------------

<% request.setAttribute("aaa", "new BBB() ")%>

**************************************************
とクラスBのコンストラクタを呼び、リクエストスコープに入れようとすると、怒られてしまいました。
eclipse上ではエンクロージングインスタンスを指定てくださいと言ったメッセージが表示されたので、google等でも調べて見てみたのですがいまいちピンときません。
エンクロージングインスタンスとはどういうことなのでしょうか?
うまく上記のソース上でリクエストスコープにMapのオブジェクトを格納したいと思っています。
どうか宜しくお願いします。

■開発環境■
Eclipse 3.1.0
jdk1.4.12
struts1.2.9

A 回答 (2件)

現在のJavaはクロージャ関係にはあまり強くないんですね。


(今後のJDKでついに変わるようですが)

ご質問の点ですが、内部クラス(BBB)のインスタンスを作るには
その前に外部クラス(つまりエンクロージャ)
(AAA)のインスタンスが必要になります。

JSP内でということですので、きれいな書き方は考えなければなりませんが、
AAA aaa = new AAA();
aaa.new BBB();
で、BBBのインスタンスが作成されます。
    • good
    • 0

エンクロージングインスタンス



http://www.kab-studio.biz/Programing/JavaA2Z/Wor …

上記サイトとeclipseのメッセージをあわせると、
BBBクラスのインスタンスを作るためには必ずAAAクラスのインスタンス(BBBクラスに対するエンクロージングインスタンス)が必要なので、エンクロージングインスタンスを指定して下さい。
ということではないでしょうか?
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
私のソースでエンクロージングインスタンスを指定したとすると

<% request.setAttribute("aaa", "new AAA.BBB() ")%>

ってことでしょうか?
質問に質問で返して申し訳ないのですが宜しくお願いします

お礼日時:2007/02/01 23:26

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