本文介绍了我怎么知道一个类的实例是否已经存在于内存中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我如何知道某个类的实例是否已经存在于内存中?

How can I know whether an instance of a class already exists in memory?

我的问题是'不要'如果存在类
的实例,则需要读取方法这是我的代码

My problem is that don't want read method if exist instance of Classthis is my code

private void jButton (java.awt.event.ActionEvent evt) {
    PNLSpcMaster pnlSpc = new PNLSpcMaster();
    jtabbedPanel.addTab("reg",pnlSpc);
}

我想检查 PNLSpcMaster 当然我可以通过静态布尔检查,但我认为这种方式更好。

I want check instance of PNLSpcMaster of course I can check by static boolean but I think this way is better.

推荐答案

如果你想只有一个PNLSpcMaster实例然后你:

If you want to have only one instance of "PNLSpcMaster" then you do need a singleton:

这是常见的单身成语:

public class PNLSpcMaster {

   /**
    * This class attribute will be the only "instance" of this class
    * It is private so none can reach it directly.
    * And is "static" so it does not need "instances"
    */
   private static PNLSpcMaster instance;

   /**
     * Constructor make private, to enforce the non-instantiation of the
     * class. So an invocation to: new PNLSpcMaster() outside of this class
     * won't be allowed.
     */
   private PNLSpcMaster(){} // avoid instantiation.

   /**
    * This class method returns the "only" instance available for this class
    * If the instance is still null, it gets instantiated.
    * Being a class method you can call it from anywhere and it will
    * always return the same instance.
    */
   public static PNLSpcMaster getInstance() {
        if( instance == null ) {
            instance = new PNLSpcMaster();
        }
         return instance;
   }
   ....
 }

用法:

private void jButton (java.awt.event.ActionEvent evt) {
    // You'll get the "only" instance.
    PNLSpcMaster pnlSpc = PNLSpcMaster.getInstace(); //<-- getInstance()
    jtabbedPanel.addTab("reg",pnlSpc);
}

或直接:

private void jButton (java.awt.event.ActionEvent evt) {
    jtabbedPanel.addTab("reg",PNLSpcMaster.getInstace());
}

对于基本用法,非常有效。但是对于更复杂的用法,它可能很危险。

For basic usages the Singleton Pattern works very well. However for more sophisticated usages it may be dangerous.

您可以阅读更多相关信息:

You could read more about it: Why singletons are controversial

这篇关于我怎么知道一个类的实例是否已经存在于内存中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-12 00:35
查看更多