Ok, la pregunta puede no ser clara. Permítanme dar algunos detalles:¿Cómo puedo hacer que un constructor esté disponible solo para la clase de fábrica?
Digamos que tengo una clase de fábrica de objetos Shoe (CShoe) llamada CFactory. CFactory es una clase singleton que crea y almacena todos los zapatos instanciados utilizando un hashmap simple. A continuación, se accede a través de métodos estáticos para usar los objetos creados.
¿Hay alguna manera de forzar al constructor de CShoe para que solo pueda ser llamado de fábrica? (En otras palabras, asegúrese de que la creación de zapatos solo pueda ser realizada por la clase única de fábrica de zapatos y no por otras clases)
¿Desea que el producto sea una clase anidada de la fábrica? –
también puede hacer que CShoe sea una clase interna (no clase estática). Al hacerlo, también evitará que otras personas puedan crear una instancia de CShoe sin tener una instancia de CFactory. – Chii
La reflexión es * siempre * capaz de eludir los modificadores de control de acceso con el método setAccessible(), si su ejemplo puede ejecutarse. Puede detener esto ejecutando un SecurityManager que no permite el permiso "suprimir Access Checks", consulte http://java.sun.com/docs/books/tutorial/essential/environment/security.html –