java - ClassCastException String cannot be converted to custom class -


this classcastexception driving me crazy. when invoking method insert() this:

exception in thread "main" java.lang.classcastexception: java.lang.string cannot cast rubrica$pair 

hope can without loosing time :).

class rubrica implements dictionary { private object[] v; private int vsize; public static int initsize = 1;  /*     verifica se il dizionario contiene almeno una coppia chiave/valore */ public rubrica() {     v = new object[initsize];     makeempty(); }  private object[] resize(object[] v, int length) {     object[] newv = new object[length * 2];     system.arraycopy(v, 0, newv, 0, length);     return newv; }  /*     svuota il dizionario */ public void makeempty() {     for(int = 0; < v.length; i++)         v[i] = new pair(null, -1);      vsize = 0; }  /*  inserisce un elemento nel dizionario. l'inserimento va sempre buon fine.  se la chiave non esiste la coppia key/value viene aggiunta al dizionario;   se la chiave esiste gia' il valore ad essa associato viene sovrascritto  con il nuovo valore; se key e` null viene lanciata illegalargumentexception */ private object[] insertionsort(object[] v, int vsize) {     for(int = 0; < vsize; i++)     {         comparable temp = ((pair)v[i]).getname();         int j;          for(j = i; j > 0 && temp.compareto(((pair)v[j - 1]).getname()) < 0; j--)             v[j] = v[j - 1];          v[j] = temp;     }      return v; }  public void insert(comparable key, object value) {     if(vsize == v.length)         v = resize(v, vsize);      if(key.equals(null))         throw new illegalargumentexception();      int index = binarykeyindexsearch(v, vsize, key);     if(index == -1)         v[vsize++] = new pair((string)key, (long)value);     else         v[index] = new pair((string) key, (long)value);      v = insertionsort(v, vsize);     }  /*  cerca nel dizionario l'elemento specificato dalla chiave key  la ricerca per chiave restituisce soltanto il valore ad essa associato  se la chiave non esiste viene lanciata dictionaryitemnotfoundexception */ private int binarykeyindexsearch(object[] v, int vsize, comparable value) {     return binkeysearch(v, 0, vsize - 1, value); }  private int binkeysearch(object[] v, int from, int to, comparable value) {     if(from > to)         return -1;      int mid = (from + to) / 2;        comparable midvalue = ((pair)v[mid]).getname(); //errore      if(value.compareto(midvalue) == 0)         return mid;     else if(value.compareto(midvalue) < 0)         return binkeysearch(v, from, mid - 1, value);     else         return binkeysearch(v, mid + 1, to, value); }  //classe privata pair: not modify!! private class pair {   public pair(string aname, long aphone)     {   name= aname;          phone = aphone;     }     public string getname()      {   return name; }     public long getphone()      {   return phone; }     /*         restituisce una stringa contenente         - la nome, "name"         - un carattere di separazione ( : )         - il numero telefonico, "phone"     */     public string tostring()      {   return name + " : " + phone; }     //campi di esemplare     private string name;     private long phone; } } 

the problem in method:

private object[] insertionsort(object[] v, int vsize) {     for(int = 0; < vsize; i++)     {         comparable temp = ((pair)v[i]).getname();         int j;          for(j = i; j > 0 && temp.compareto(((pair)v[j - 1]).getname()) < 0; j--)             v[j] = v[j - 1];          v[j] = temp;     }      return v; } 

look closely, write temp name of v[i] , assign temp v[j]so have string instead of pair in v[j].

you rid of classcastexceptions if have used correct type array, pair[]. mean if swap object[] pair[] see kind of incorrect assignment in compile time, not in runtime.


Comments

Popular posts from this blog

sublimetext3 - what keyboard shortcut is to comment/uncomment for this script tag in sublime -

java - No use of nillable="0" in SOAP Webservice -

ubuntu - Laravel 5.2 quickstart guide gives Not Found Error -