Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Java: Cast da int ad Object

    salve a tutti non riesco a capire perchè non fa il cast da intero ad object sulla chiamata del metodo



    esempio

    metodo con il passaggio di un numero

    classe c = new classe();
    c.metodo(5)



    il metodo e fatto così

    public class classe
    {

    Object S[]=new Object [MAX]

    void metodo (Object element)
    {
    S[indice] = element;
    }
    }


    non capisco perchè element alla chiamata contiene questo : ID=25
    mentre se gli passo una stringa va tutto ok
    Agos

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Java: Cast da int ad Object

    Originariamente inviato da agostinomiranda
    salve a tutti non riesco a capire perchè non fa il cast da intero ad object sulla chiamata del metodo
    Innanzitutto questo si può fare da Java 5 in poi. È infatti lecito assegnare un int (o altro primitivo) ad un Object. Le regole dicono che nel caso di assignment conversion o method invocation conversion, è possibile effettuare un boxing opzionalmente seguito da un widening del reference. Quindi int -> Integer -> Object.

    Sarà che hai postato male, ma hai scritto classe.metodo(5). Così sembra che il metodo sia statico poiché invocato sul nome della classe. Mentre si vede dal codice che il metodo è di istanza.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Si infatti ho scritto male,(Adesso l'ho corretto) l'invocazione del metodo avviene nel main dove ho dichiarato un oggetto riferito a classe.

    Comunque uso java 1.5.0_06 quindi non dovrebbe essere problema di versione
    Agos

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da agostinomiranda
    Comunque uso java 1.5.0_06 quindi non dovrebbe essere problema di versione
    La versione è ok. Puoi postare qualcosa di più?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Questo è la classe

    public class ArrayStack implements Stack{
    //variabile:
    private int top;
    private Object S[];
    private int capacity;


    //Costruttore
    public ArrayStack (int element)
    {
    top=-1;
    S= new Object [element];
    capacity=element;
    }


    //metodo in questione
    public void Push(Object element)
    throws EmptyStackException {

    if (this.Size() == capacity)
    throw new EmptyStackException("Stack Pieno");
    top++;
    S[top]=element;
    }
    }







    E questa è la chiamata che faccio nel main con la dichiarazione dell'oggetto

    ArrayStack s = new ArrayStack(10);



    s.Push(5);
    Agos

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da agostinomiranda
    Questo è la classe
    Immagino che Stack sia una tua interfaccia. Il codice non è ancora completo comunque fin qui mi sembra ok.
    Volendo essere pignoli non hai seguito le convenzioni di denominazione ma per il momento tralasciamo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Si stack è una interfaccia, ma il problema è tutto qui, se eseguo il codice indebug mi accorgo che dopo l'invocazione del metodo con il passaggio del numero 5, la variabile Object element anzichè iniziallizzarsi con 5 si inizializza con "id=25"
    Agos

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da agostinomiranda
    Si stack è una interfaccia, ma il problema è tutto qui, se eseguo il codice indebug mi accorgo che dopo l'invocazione del metodo con il passaggio del numero 5, la variabile Object element anzichè iniziallizzarsi con 5 si inizializza con "id=25"
    Non so che debugger usi ma è ininfluente.
    Metti un System.out.println(element); nel metodo e vedi cosa stampa.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    gi fatto è stampa id=25

    Uso eclipse, ed adesso mi sta venendo un dubbio, provo una cosa e ti faccio sapere
    Agos

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da agostinomiranda
    gi fatto è stampa id=25
    Non è possibile che un Integer stampi questo testo "id=25"!!
    Il toString() di Integer stampa solo il valore del int e basta.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.