我有一些对象会定期加载到我的应用程序中。为了快速访问它们,对它们进行排序,我将它们存储在一个集合中。
我的问题是,由于此集合不属于我的任何当前类,因此我创建了自己的最终类,仅使用私有构造函数以及静态方法和属性来进行存储和管理。
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...
}
我对完整的静态方法和属性不满意。我怎么称呼它?静态课程?静态单身人士?
答案 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);
}
但是,使用这种魔术可以使代码更难遵循(当然不是针对编译器,而是针对人类)。