收集手势类

时间:2019-07-15 10:03:27

标签: java

我有一些对象会定期加载到我的应用程序中。为了快速访问它们,对它们进行排序,我将它们存储在一个集合中。

我的问题是,由于此集合不属于我的任何当前类,因此我创建了自己的最终类,仅使用私有构造函数以及静态方法和属性来进行存储和管理。

public class MyObject {
    //stuff
}

public final class LisOfMyObject {
    private static ArrayList<MyObject> myObjects = new ArrayList<MyObject>();
    private LisOfMyObject {}

    private static void addObject(MyObject object) {
         //stuff
    }
    private static boolean isInList(MyObject object) {
        //stuff
    }
    // etc...
}

我对完整的静态方法和属性不满意。我怎么称呼它?静态课程?静态单身人士?

2 个答案:

答案 0 :(得分:0)

如果要将此类转变为单例,可以将其更改为:

public final class LisOfMyObject {

    private static LisOfMyObject _instance;
    private ArrayList<MyObject> myObjects = new ArrayList<MyObject>();

    private LisOfMyObject {}

    public LisOfMyObject instance() {
        if (_instance == null)
            _instance = new LisOfMyObject();
        return LisOfMyObject;
    }

    private void addObject(MyObject object) {
         //stuff
    }
    private boolean isInList(MyObject object) {
        //stuff
    }
    // etc...
}

,然后以它的身份访问

    LisOfMyObject.instance().addObject(obj);

我个人更喜欢这种类型的类,因为它消除了将所有内容声明为静态的需要。

答案 1 :(得分:0)

如果您只想键入更少的内容,可以使用import static,然后可以调用静态方法而无需在它们前面编写LisOfMyObject.

import static LisOfMyObject.*;

class SomeClass {
  public void doWeirdStuff() {
    ...
    MyObject something=...
    if(!isInList(something)) {
      addObject(something);
    }

但是,使用这种魔术可以使代码更难遵循(当然不是针对编译器,而是针对人类)。