• ベストアンサー

オブジェクトの解放をするには?(JBuilder8)

パネルを継承したクラスを作り、それを使ってオブジェクトを作りました。下記のように・・・ *** public class newPanel extends Panel{ *** newPanel pnl = new newPanel(); *** でこの"pnl"をあるタイミングで解放して取り直したいのですが解放には"pnl"に"null"をいれれば良いのでしょうか?

  • t-tree
  • お礼率83% (183/218)
  • Java
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.1

「解放」とは何からの解放を指しているのでしょうか? Q1.使用済みとなったオブジェクトをメモリから解放して、 無駄なメモリを減らしたい。 A1.オブジェクトがどの変数からも参照されていなければ、 自動的に解放されます(ガーベージコレクション) Q2.フレーム等に貼り付けたパネルを削除したい A2.貼り付けられたフレーム等のremove()メソッドを使って削除する。

t-tree
質問者

お礼

お答えありがとうございました。 私の質問したかったのはQ2でした・・・ removeメソッドですね!調べて見ます。

関連するQ&A

  • 配列で作ったオブジェクトのイベントを取得するには?

    下記のクラス内で"ary"という10枚のパネルのオブジェクトを配列で作成しました。その"ary"パネルがクリックされた時のイベントを書きたいのですが、私の書いたロジックではイベントを取得できませんでした。 なにか良い方法がありませんでしょうか? public class Main_Panel extends Panel{ int y = 0; Panel ary[] = new Panel[10];   //CONSTRUCT public MainPanel() { for(int i = 0 ; i < 10; i++ ){ ary[i] = new Panel() this.add(ary[i], null); ary[i].setBounds(new Rectangle(0, y, 5, 5)); intYPos = intYPos + 10; ary[i].addMouseListener(new ary_MouseAdapter(this)); } } //パネル(ary)クリックイベント void ary_mouseClicked(MouseEvent e){ } } class ary_MouseAdapter extends java.awt.event.MouseAdapter { Main_Panel adaptee; ary_MouseAdapter(Main_Panel adaptee) { this.adaptee = adaptee; } public void mouseClicked(MouseEvent e) { adaptee.ary_mouseClicked(e, num); } }

    • ベストアンサー
    • Java
  • コンストラクト内でオブジェクト配列の数を設定するには?

    下記のように現在"Panel_Song"のオブジェクトを100の配列宣言しています。 しかし本当はConstruct内で引数"num"分の配列を作りたいのです。 Construct内で配列を宣言できない理由は、このオブジェクト配列はクラス全体でアクセス可能にしたいからです。 配列宣言だけしておいて、後から配列の数を決めるとかって無理ですよね・・・ どうするのが理想的でしょうか? public class Panel_List extends Panel{ Panel_Song pnlAlbum[] = new Panel_Song[100];    //Construct public Panel_List(int num) { }

    • ベストアンサー
    • Java
  • コンパイルエラー(Threadオブジェクト化)

    Runnableを継承したNormalClassをThreadとしてオブジェクト化しようとしているのですが、コンパイルエラーが出現して困っています。どうすればいいでしょうか? 下記エラー参照 Main.java:1: NormalClass は abstract でなく、java.lang.Runnable 内の abstract メソッド run() をオーバーライドしません。 下記ソース class NormalClass implements Runnable{ } class Main extends Thread{ public static void main(String args[]){ test = new Thread(new NormalClass()); } }

    • ベストアンサー
    • Java
  • C#におけるObjectのキャストについて

    こんにちは。 C#におけるObjectのキャストについて、基本的なことにつまずいてしまいました。 以下のような継承関係にあるクラスで、InvalidCastExceptionが投げられてしまいます。 public class ClassA {} public class ClassA_Ex : ClassA {} ClassA_Ex ex = (ClassA_Ex)new ClassA(); キャストできない訳はないと思うのですが…。 何か大きな見落としがありそうですが、よろしくお願いいたします。

  • 総称型のキャストでエラー

    下の書き方で、※1はエラーにならないのですが ※2ではエラーになります。 ※1がキャスト可能であれば、 ※2も可能だとおもうのですが。 Java7を使っています。 public class Soushou { void test() { List<Kodomo> kodomoList = new ArrayList<Kodomo>(); List<? extends Oya> oyaList = kodomoList; Object o1 = (List<Oya>) oyaList; // ※1 エラーにならない。 Object o2 = (List<Oya>) kodomoList; // ※2 「キャストすることができません」エラーになってしまう。 } } class Oya { // 親クラス } class Kodomo extends Oya { // 親クラスを継承した子クラス }

    • ベストアンサー
    • Java
  • 「オブジェクト志向」の考えかたで質問します。

    「オブジェクト志向」の考えかたで質問します。 いろいろと調べると、 ・繼承 ・カプセル化 ・ポリモーフィズム を総称したのが、「オブジェクト」志向と理解しています。 このとき、 たとえば、 指定するクラスの生徒の情報をとりだすようなソースをつくりたい。 仮に、以下をかんがえてみました。 DB処理は、省いてます。 //実行DAOクラス public class StudentDAO extends StudentDBAccessor{ //指定するクラスに属する生徒をとりだす public List getStudentList(int classNumber){ return super.getStudentList(); } //sql文生成 protected String createSqlSelectStudentList(){ StringBuffer sb = new StringBuffer(); return sb.toString(); } //キーワードを設定 public void setDataSqlStudentList(){ } } public abstract StudentDBAccessor extends DBConnector{ protected List getStudentList(){   //DBそうさ } protected abstract String createSqlStudentList(); protected void setDataSqlStudentList(int classNumber); } //DB接続クラス public class DBConnector{   //省略 } //Beanクラス public class StudentFormBean{ private int studentNumber; private String studentName; public void setStudentNumber(int number){ this.studentNumber = number; } public int getStudentNumber(){ return studentNumber; } } よろしくおねがいします。

    • ベストアンサー
    • Java
  • どのオブジェクトなのかの判別。

    class State { ... } class A extends State { ... } class B extends State { ... } public static void main(String[] args){ State s = new A(); …//分岐条件などによりStateがAとかBに変化する …//ここでsはAかBかを知りたい。 } という場合、sがAのオブジェクトかBのオブジェクトなのかを判別する簡単な方法はありますか? 状態を表すようなフィールド変数を導入して、判別する方法くらいしか思いつきません。

    • ベストアンサー
    • Java
  • 継承(extends)について

    extendsについてわからないことがあります。 次の3つのクラスがあった時、 class スーパークラス { ... class サブクラス1 extends スーパークラス { ... class サブクラス2 extends サブクラス1 {... サブクラス2は、サブクラス1でスーパークラスから継承しているフィールドをメソッドを継承するのでしょうか?

    • ベストアンサー
    • Java
  • オブジェクト指向言語について

    オブジェクト指向言語における、クラス継承の動作について ご教授ください。 クラスを継承する場合、extendsなどといったキーワードで継承の動きを 実現させるとおもいますが、継承とは、Aというクラスを丸々包含したBというクラスを作成することをいうのでしょうか? それとも、Aというクラス内にあるpublicやprotectedメンバのみをBというクラスに引き継ぐことをいうのでしょうか? 書籍にやサイトによっては【継承とは継承もとのprivateおよびprotecetd(に準じた)メンバを派生クラスに引き継がせる】という風に解釈できる文面で記述されているものがあります。 継承とは親クラスを拡張した子クラスを作成する と解釈できるような文面で記述された文献もあります。 伺いたいのは、クラス丸ごとを継承するのかそれともpublicおよびprotectedに準じたメンバのみを 継承するのかです。 OOPの思想や、ちょっと詳しいからといってこまごましたことを こたえてくるような方はご遠慮ください。

  • static変数を持ったクラスを継承した複数のクラスで、独立してその変

    static変数を持ったクラスを継承した複数のクラスで、独立してその変数を使いたい。 例えば、 class AbstractStatic{ public static String str; } class Ex1 extends AbstractStatic{} class Ex2 extends AbstractStatic{} というクラスがあったとして、 Ex1 e1 = new Ex1(); ex1.str = "hoge"; といれると、 ex2.str で、hogeが入ってしまいます。同じようなstatic変数を持つクラスを複数作りたいのですが、継承させると、独立して変数を持たせられません。 同じようなクラスに直接static変数を、記述するしかないのでしょうか?

    • ベストアンサー
    • Java