Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Differenza tra myClass<T> e myClass<Object>

    volendo fare un template (generic in java credo)

    mi spiegate la differenza tra le 2 sopra?

    forse se faccio myClass<Object> poi dopo non posso crearla con i tipi primitivi (ma non è una grande perdita visto che in java i tipi primitivi non è che si usino tanto )

    grazie per le spiegazioni

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

    Re: Differenza tra myClass<T> e myClass<Object>

    Originariamente inviato da xnavigator
    volendo fare un template (generic in java credo)

    mi spiegate la differenza tra le 2 sopra?
    Ma dipende dal contesto in cui usi < ... >.

    Se nella dichiarazione di una classe:

    public class Qualcosa<T> ......

    o anche nella dichiarazione di un metodo "generico" es.:

    public static <T> void xyz(Qualcosa<T> q)

    Il T è una "type variable", vedila come un segnaposto.


    Se invece è nella istanziazione di un oggetto es.:

    .... = new Qualcosa<String>();

    allora Qualcosa<String> è un "parameterized type" (tipo parametrizzato) e tra < > ci va un tipo realmente esistente (es. Object, String, ecc....)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    no mi riferivo per la definizione di una classe

    cioè questo

    class myClass<T> {


    }

    cosa cambia da:



    class myClass<Object> {


    }

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da xnavigator
    no mi riferivo per la definizione di una classe

    cioè questo

    class myClass<T> {


    }

    cosa cambia da:



    class myClass<Object> {


    }
    Niente, sono entrambi T e Object delle type variable. E non si dovrebbe usare Object, perché farebbe solo confusione. Nel framework standard per le type variable vengono usate lettere del tipo T, E, K, V. Ci sono delle convenzioni abbastanza comuni.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Originariamente inviato da andbin
    Niente, sono entrambi T e Object delle type variable. E non si dovrebbe usare Object, perché farebbe solo confusione. Nel framework standard per le type variable vengono usate lettere del tipo T, E, K, V. Ci sono delle convenzioni abbastanza comuni.

    ma quindi li dentro posso scrivere qualunque cosa come marcatore?

    cioè: myClass<miomarcatorebellociao>{
    miomarcatorebellociao[] variabile1
    }


    ?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da xnavigator
    ma quindi li dentro posso scrivere qualunque cosa come marcatore?

    cioè: myClass<miomarcatorebellociao>{
    miomarcatorebellociao[] variabile1
    }


    ?
    Tecnicamente sì, purché rispetti le regole per la composizione degli "identificatori" (le stesse che valgono per nomi di classi, nomi di metodi, nomi di variabili, ecc...).

    Ma ripeto che ci sono delle convenzioni tipiche e normalmente non si mette un NomeLungoComeLaQuaresima. Si mettono lettere che servono solo come "segnaposto" (il termine probabilmente non è il più adatto ma rende l'idea).

    Se ad esempio crei una classe che fa da "contenitore" per 2 oggetti che fungono uno da chiave e l'altro da valore, ad esempio per delle associazioni, puoi fare e in modo sensato:

    codice:
    public class Associazione<K,V> {
        private K chiave;
        private V valore;
    
        ....
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    sisi era solo per chiarire il fatto che anceh se stavi usando "Object" per esempio questo non aveva nessun collegamento con la classe object di java

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.