程序示例大概是这样的: public class myFrame extends JFrame { private MyPanel mypanel; public dosomething() { 
mypanel = new MyPanel( int p, int q); 
} //...........else 

现在我在程序运行的过程,如果多次的调用dosomething,那知就会生成多个mypanel对象,而且同时存在,请问有什么方法能只存在一个实例吗?也就是说生成一个新对象的同时,要消灭旧对象 程序中肯定要多次调用dosomething., 而且有不同参数的q和q,要生成不同的对象。 请问那位大侠知道怎么实现吗?

解决方案 »

  1.   

    如果能删除对象, JAVA就不是JAVA了, 就是C++了.
      

  2.   

    当然,我的意思并不是一定要删除对象,只是说在运行过程中,动态的改变对象的状态。当然,我试着用setter或许可以做到,只是其中有着线程的同步问题,所以,实际的效果是原来的对象还在运行,
    当然 ,setvisible肯定不行,因为我还要显示
      

  3.   

    谢谢大家关心,我的问题已经解决了,我是通过使用setter的方法来改变对象的状态的。然后再把其中的相关操作抽出来做成一个initial函数,在setter调用,然后把问题解决了。
      

  4.   

    看情况。
    我看了贵人的代码,如果多次dosomething方法,那new MyPanel( int p, int q)将是一块垃圾内存,只有最后一次引用的new MyPanel( int p, int q); 才是被作且的。规则如:
    MyPanel mypanel;
    mypanel = new MyPanel( int p, int q);  第一次调用dosomething
    mypanel = new MyPanel( int p, int q);  第二次调用dosomething,第一次引用的new MyPanel没有被作用mypanel = new MyPanel( int p, int q);  第三次调用dosomething,第一次和第二次的new MYPanel没有被作用。

    没有被引用的内存将是垃圾,系统自动收回。。
    代码:system.gc()回收。