Java OOP中的一个好习惯是允许对象知道其类型的其他实例吗?

May*_*May 2 java oop

我特别谈到使用静态变量来实现这一点.考虑Java中的以下对象:

public class MyObject{
    private static ArrayList<String> ID_List = new List<String>();
    private String ID_Number;
    public MyObject(){
        /* Assign a random number to ID_Number
         * And ensure that this is a unique number
         * not found in ID_List. Then add it to ID_List. */
    }

    /* Other methods and such */
}
Run Code Online (Sandbox Code Playgroud)

在某种程度上,这是为了确保每个对象都具有易于访问和可读的独特且有区别的属性.但是,我不确定相同类型的所有对象之间的这种奇怪耦合是否是良好的做法.

因为它让我感到不舒服,所以我倾向于认为这不是一个好主意.以OOP方式思考这个问题的正确方法是什么?

Cat*_*ica 5

使用静态ID_INCREMENTOR和本地objectID不是很实际吗?在构造函数中,将一个添加到ID_INCREMENTOR,然后将objectID设置为ID_INCREMENTOR当前值?

那么没有两个对象会有相同的id.

例:

public class MyObject{
    private static long ID_INCREMENTOR = 0;
    private long id;
    public MyObject(){

          ID_INCREMENTOR++;
          id = ID_INCREMENTOR;

    }

public long getID(){
    return id;
}

/* Other methods and such */
}
Run Code Online (Sandbox Code Playgroud)

就我所见,这可能是最简单的方法.这些对象彼此之间并不了解,但您可以放心,除非您通过类/反射设置它,否则没有两个对象将具有相同的唯一标识符.