{"id":175,"date":"2017-03-27T10:15:30","date_gmt":"2017-03-27T10:15:30","guid":{"rendered":"https:\/\/blog.jkanework.com\/post.php?idpost=175"},"modified":"2017-03-27T10:15:30","modified_gmt":"2017-03-27T10:15:30","slug":"la-mentira-de-java","status":"publish","type":"post","link":"https:\/\/blog.jkanetwork.com\/?p=175","title":{"rendered":"La mentira de java"},"content":{"rendered":"<p>Buenas lectores, si ya est&aacute;is acostumbrados a usar java sabr&eacute;is que Object incluye dos m&eacute;todos muy interesantes, equals y clone, pues bien, no son lo que parecen a simple vista.<\/p>\n<p>equals, que recibe un objecto y lo compara con el objeto sobre el que se aplica devuelve true si los dos son iguales, false si no. Por eso hay que usarlo en vez de el famoso == ya que este &uacute;ltimo compara que los punteros son el mismo, y no el objeto. Sin embargo la implementaci&oacute;n de equals es la siguiente.<\/p>\n<pre class=\"language-java\"><code>public boolean equals(Object obj) {\n        return (this == obj);\n}<\/code><\/pre>\n<p>Si, usa el doble igual, as&iacute; que equals si no lo reimplementamos no funcionar&aacute; con nuestras propias clases, ocurriendo cosas como esta.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/i.imgur.com\/Yp5hPvF.jpg\" width=\"476\" height=\"114\" \/><\/p>\n<p>La otra perla es clone, que se supone que devuelve un objeto id&eacute;tico al objeto sobre el que se aplica, ahora bien, esta es la realidad.<\/p>\n<pre class=\"language-java\"><code>protected native Object clone() throws CloneNotSupportedException;<\/code><\/pre>\n<p>Vamos, que est&aacute; como pod&iacute;a no estarlo. Para empezar ni siquiera hace algo y despu&eacute;s lanza una excepci&oacute;n. En la propia documentaci&oacute;n dice que<\/p>\n<pre class=\"sourcelines stripes4 wrap\"><span id=\"l187\">     *The method {@code clone} for class {@code Object} performs a<\/span>\n<span id=\"l188\">     * specific cloning operation. First, if the class of this object does<\/span>\n<span id=\"l189\">     * not implement the interface {@code Cloneable}, then a<\/span>\n<span id=\"l190\">     * {@code CloneNotSupportedException} is thrown.<br \/><br \/><\/span><\/pre>\n<p>As&iacute; que si quieres que tu objeto se pueda clonar, no olvides implementar la interfaz Cloneable, que digo yo, para que pone clone en Object si necesitabas una interfaz pero bueno, es lo que hay. Tenedlo en cuenta cuando program&eacute;is en java.<\/p>\n<p>Nos vemos en el siguiente art&iacute;culo.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Buenas lectores, si ya est&aacute;is acostumbrados a usar java sabr&eacute;is que Object incluye dos m&eacute;todos muy interesantes, equals y clone, pues bien, no son lo que parecen a simple vista. equals, que recibe un objecto y lo compara con el objeto sobre el que se aplica devuelve true si los dos son iguales, false si [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-175","post","type-post","status-publish","format-standard","hentry","category-informatica"],"_links":{"self":[{"href":"https:\/\/blog.jkanetwork.com\/index.php?rest_route=\/wp\/v2\/posts\/175","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.jkanetwork.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.jkanetwork.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jkanetwork.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jkanetwork.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=175"}],"version-history":[{"count":0,"href":"https:\/\/blog.jkanetwork.com\/index.php?rest_route=\/wp\/v2\/posts\/175\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.jkanetwork.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=175"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jkanetwork.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=175"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jkanetwork.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}