en cuenta dos referencias de tipo entero que llamar al método de fábrica estática valueOf como se muestra a continuación: -¿Está bien comparar objetos inmutables en Java utilizando en lugar de == es igual
Integer a = Integer.valueOf("10");
Integer b = Integer.valueOf("10");
Entero Teniendo en cuenta que es inmutable, se está bien comparar a y b usando == en lugar de usar el método igual. Supongo que el método valueOf asegura que solo se crea una instancia de Integer con el valor 10 y se devuelve una referencia a esta instancia para cada entero creado con un valor 10.
En general, ¿está bien compararlo? dos referencias de una clase inmutable que se crean utilizando una llamada al mismo método de fábrica estático utilizando == en lugar de iguales?
Edit: La clase Integer se usó solo a modo de ejemplo. Soy consciente de que Intgers upto 127 volverá verdadero si se comparan con ==. Lo que necesito saber es que cuando creo mi propia clase inmutable, digamos MyImmutable con un método create() que asegure que no se creen objetos MyImmutable duplicados, ¿estará bien si comparo 2 referencias MyImmutable creadas usando el método create por usando == en lugar de igual.
Por favor, lea [esto] (http: //www.javabeat.net/qna/13-what-is-difference-between-equals-and- /) –
La inmutabilidad solo implica que no pueden cambiar. Se debe tener especial cuidado con el almacenamiento en caché (no 'nuevo') para garantizar que se devuelven los mismos valores para los mismos parámetros de entrada. –
Puede usar '==' en lugar de iguales para los tipos donde equals no se ha anulado. Como esto podría cambiar en el futuro, igualar es casi siempre mejor. El único momento en el que diría que '==' es mejor es con tipos como 'enum' que podría ser' null' y usar '==' simplifica el código en este caso. –