Differences
This shows you the differences between two versions of the page.
— |
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> |