23.02.2017 Views

Java

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Java</strong> 173<br />

Cloneable y tener ciertas consideraciones. Los demás métodos<br />

definidos son para sincronizar, de forma rudimentaria, varios hilos de<br />

ejecución. Estos métodos no deberían ser utilizados normalmente y se<br />

recomienda usar otras maneras de sincronización más avanzadas.<br />

Implementar los métodos equals y hashCode<br />

Los métodos equals y hashCode son especiales y requieren cuidado a<br />

la hora de ser sobrescritos en las otras clases.<br />

El método equals requiere que se implemente una relación de<br />

equivalencia que debe ser reflexiva, simétrica y transitiva. Es reflexiva<br />

si para todo objeto no nulo x, x.equals(x) retorna true. Es simétrica si se<br />

cumple que para todo par de objetos no nulos x<br />

e y, x.equals(y) es igual y.equals(x). Finalmente, es<br />

transitiva si, y solo si, para los objetos no nulos<br />

x, y y z, se cumple que si x.equals(y) regresa true a<br />

su vez que y.equals(x) también lo hace, entonces<br />

x.equals(z) tiene que regresar true. También se<br />

espera que el método sea consistente, esto quiere<br />

decir que sucesivas invocaciones del método<br />

con los mismos parámetros arrojen los mismos<br />

resultados (a menos que el objeto cambie).<br />

Finalmente, todo objeto x no nulo es distinto a null<br />

y por lo tanto x.equals(null) da false.<br />

El método hashCode tiene como objetivo utilizar la información<br />

del objeto (sus atributos) para generar un número entero utilizado<br />

en las colecciones que usan tablas de hash internamente. La idea<br />

es que utilizando los atributos que definen la identidad del objeto<br />

equals y hashcode<br />

requieren cuidado<br />

a la hora de ser<br />

sobreescritos en<br />

otras clases<br />

Stream desde string<br />

Los stream ofrecen una abstracción a la transmisión de bytes y no están fijos a la red o a los archivos.<br />

Podemos crear stream para cualquier cosa. Una de las cosas más comunes es querer obtener un<br />

InputStream a partir de un String. Lamentablemente, debemos tener en cuenta que <strong>Java</strong> ofrece una<br />

clase, la StringBufferInputStream, que es actualmente depreciada. La opción es entonces utilizar un<br />

ByteArrayInputString usando los bytes del texto o directamente un StringReader.<br />

www.FreeLibros.me<br />

www.redusers.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!