Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pub:labprog:20171218 [2017/12/18 17:14] (current)
atrent created
Line 1: Line 1:
 +====== Equals, compare, ereditarietà,​ ecc. ======
  
 +
 +<code java>
 +public class EqualsEtc{
 + public static void main(String[] arg){
 + Object o1=new MioOggetto("​pippo"​);​
 + Object o2=new MioOggetto("​pluto"​);​
 + Object o3=new Object();
 +
 + System.out.println(o1);​
 + System.out.println(o2);​
 + //​System.out.println(o1=o2);​
 + System.out.println(o1==o2);​ // confronta solo i reference
 + System.out.println(o1.equals(o2));​ // confronta "​tutto"​
 +
 + //​System.out.println(o1.equals(o3));​ // confronta "​tutto"​
 +
 + Object o4=new AltraClasse();​
 + System.out.println(o1.equals(o4));​ // confronta "​tutto"​
 +
 + //int ciao=7;
 + //​System.out.println(ciao=8);​
 + }
 +}
 +
 +class MioOggetto{
 + private String nome, cognome, targa, orario;
 +
 + public MioOggetto(String nome){
 + this.nome=nome;​
 + }
 +
 + public boolean equals(Object altro){
 +
 + // 1)
 + //return altro instanceof MioOggetto; // criterio di uguaglianza un po' lasco
 +
 + // 2)
 + if(altro instanceof MioOggetto)
 + return ((MioOggetto)altro).nome==nome;​
 + return false;
 +
 + }
 +}
 +
 +
 +
 +class AltraClasse{
 + String nome;
 +}
 +
 +class Sopra{
 + String valore;
 + public String toString(){
 + return "​sopra:​ "​+valore;​
 + }
 +}
 +
 +class Sotto extends Sopra{
 + int valore;
 + public String toString(){
 + return super.toString()+",​ sotto: "​+valore;​
 + }
 +}
 +
 +class TestCastIncasinati{
 + public static void main(String[] arg){
 + /*
 + Object o=new Sotto();
 + ((Sopra)o).valore="​contenuto";​
 + ((Sotto)o).valore=7;​
 + System.out.println(o);​
 + */
 +
 + /*
 + Sopra o=new Sotto();
 + o.valore=7;​
 + o.valore="​contenuto";​
 + System.out.println(o);​
 + */
 +
 + Sotto o=new Sotto();
 + o.valore=7;​
 + ((Sopra)o).valore="​contenuto";​
 + System.out.println(o);​
 + }
 +}
 +</​code>​
 +
 +<code java>
 +import java.util.*;​
 +
 +public class CompareTo{
 + public static void main(String[] arg){
 + ArrayList<​Contenuto>​ lista = new ArrayList<​Contenuto>​();​
 +
 + /*
 + for(int i=1;​i<​15000;​i+=3000){
 + lista.add(new Contenuto(i));​
 + }
 + */
 +
 + lista.add(new Contenuto("​uno"​));​
 + lista.add(new Contenuto("​due"​));​
 + lista.add(new Contenuto("​tre"​));​
 + lista.add(new Contenuto("​quattro"​));​
 + lista.add(new Contenuto("​cinque"​));​
 + lista.add(new Contenuto("​sei"​));​
 + lista.add(new Contenuto("​dodici"​));​
 + lista.add(new Contenuto("​trentasette"​));​
 +
 + System.out.println(lista);​
 +
 + lista.sort(new MioComparatore());​
 +
 + // usando la "​reflection"​ si può istanziare classe a partire dal nome in stringa
 +
 + // es. Class.forName("​NuovoComparatoreAggiuntoAllUltimoMinuto"​).newInstance()
 +
 +
 + lista.sort(null); ​ // equivalente a quello sotto
 + //​Collections.sort(lista);​
 +
 + System.out.println(lista);​
 + }
 +}
 +
 +class Contenuto
 + implements Comparable<​Contenuto>​
 +{
 + private String nome;
 + public String getNome(){return nome;}
 + public void setNome(String nome){this.nome=nome;​}
 +
 + public Contenuto(String nome){
 + setNome(nome);​
 + }
 +
 + public Contenuto(int nome){
 + setNome(""​+nome);​
 + }
 +
 + public int compareTo(Contenuto altro){
 + //return altro.nome.length()-nome.length();​
 + return
 + altro.nome.charAt(altro.nome.length()-1)-
 + nome.charAt(nome.length()-1);​
 + }
 +
 +
 + public String toString(){
 + return super.toString()+":​ "​+nome;​
 + }
 +}
 +
 +class MioComparatore
 + implements Comparator<​Contenuto>​
 +{
 + public int compare(Contenuto uno, Contenuto due){
 + return due.getNome().length()-uno.getNome().length();​
 + }
 +}
 +</​code>​
pub/labprog/20171218.txt · Last modified: 2017/12/18 17:14 by atrent
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0