Esta es una pregunta de programación trivial. No soy un experto en Java. Digamos que yo utilizo objetos de clases personalizadas de la empresa y de los empleados, de manera similar a lo que muchos RDBMS ejemplos hacen:¿Se puede controlar la identidad de los objetos en Java y, de ser así, cómo?
class Employee
{
Company company;
}
class Company
{
String name;
}
necesito para garantizar que los diferentes Company
objetos tienen nombres únicos - es decir, no hay dos de estos objetos pueden tener el mismo nombre, porque desde mi punto de vista no tiene sentido, y también simplemente come memoria: si dos empleados trabajan en IBM, entonces hay un solo objeto Company
con ese name
, punto.
Lo que pienso ahora es hacer que el constructor Company
sea privado, de modo que la tarea de asignar objetos Company con nombres arbitrarios se delegue en un método confiable que suponga que rechazará cualquier intento posterior de crear un objeto con un nombre que ya existe o devuelve un objeto existente o nuevo (creando uno si es necesario).
El problema es que no estoy seguro de cómo lograr esto con elegancia. Una cosa que estaría bien es no tener que hacer una búsqueda O(n)
cada vez que se solicita un objeto Company
con un nombre, entonces ¿tal vez un mapa hash o un árbol binario está ahí para mi conveniencia? También me gustaría anular la forma en que se identifican los objetos Company
, lo que me lleva a esto: ¿voy a anular los métodos Object.equals
y/o Object.hashCode
?
¿Está seguro de que debería preocuparse por el uso de memoria adicional? Tendrás que pagar por mantener un registro de todas las compañías de alguna manera, y te costará (probablemente en la CPU). Asegúrese de que su optimización no sea prematura. – nojo
Esto no es necesariamente tanto para la optimización, ya que es por la importancia de la restricción que deben evitarse dos objetos 'Company' con el mismo nombre. De esa forma, si, digamos que la compañía a la que hacen referencia los N empleados cambia de nombre, solo tengo que hacerlo para un objeto 'Empresa'. Cosas como esas. – amn