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

    Java: deprecare un metodo

    ciao a tutti,
    ho un piccolo dubbio.
    Ho una classe con un costruttore che non riceve alcun parametro.
    Ora ho modificato questa classe aggiungendo nuovi membri, ed ho creato un nuovo costruttore che riceve un parametro con cui valorizza uno dei suoi membri interni.
    Il vecchio costruttore l'ho modificando andando a valorizzare il mebro interno con un valore di default
    Questa classe è utilizzata in qualche miliardata di altre classi, e chiaramente quando la si istanzia si utilizza il costruttore senza parametri.
    Io vorrei evitare che venga utilizzato il vecchio costruttore, ma senza dover modificare tutte ad una volta le miliardate di classi che utilizzano il vecchio costruttore, così avrei pensato di rendere deprecato il vecchio costruttore, di modo che comunque il tutto continua a girare e a compilare, ma man mano che metto mano alle varie classi mi ricordo di sostituire il vecchio costruttore con il nuovo grazie al fatto che in compilazione mi arriva il messaggio che il metodo è deprecato.

    La mia domanda a questo punto è: come si fa in java a stabilire che un metodo è deprecato?

    attendo vostre risposte

    grazie e ciao

  2. #2
    Cosi'

    codice:
    @Deprecated
    public MiaClasse () {
        ...
    }
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Esatto... leggendo il forum della Sun, però, ho notato che questo tag ha valore solo per le versione della JDK superiori o uguali alla 1.4.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Visto.
    Quindi prima era obbligatorio inserirlo all'interno della documentazione?
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Originariamente inviato da dekdek
    Visto.
    Quindi prima era obbligatorio inserirlo all'interno della documentazione?
    Non lo so... non so nemmeno se il compilatore delle versioni precedenti abbia la possibilità di marcare i metodi che si intendono deprecare... forse la deprecazione non era nemmeno stata presa in considerazione...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Originariamente inviato da LeleFT
    Esatto... leggendo il forum della Sun, però, ho notato che questo tag ha valore solo per le versione della JDK superiori o uguali alla 1.4.


    Ciao.
    e quindi per le jdk più vecchie mi attacco al tram?

  7. #7
    Prova:

    codice:
         /**
         * Delete multiple items from the list.
         *
         * @deprecated  Not for public use in the future.
         * This method is expected to be retained only as a package
         * private method.
         * @see #remove(int)
         * @see #removeAll()
         */
    Fonte: Sito Java
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Originariamente inviato da caimano73
    e quindi per le jdk più vecchie mi attacco al tram?
    Diciamo che se tu compili una tua classe con la JDK 1.4, a priori non è detto che essa funzioni sulle versioni precedenti, quindi non ti dovresti preoccupare di questo problema.
    In secondo luogo, la deprecazione non ha effetto sul compilato: il compilato continua a funzionare anche se fa uso di metodi deprecati. La deprecazione, infatti, comporta solamente un worning in fase di compilazione e non un errore. E' solamente un consiglio per il programmatore che lo usa, che lo avverte del fatto che in futuro il metodo potrebbe non funzionare più.

    Ripeto, comunque, che se la tua classe è stata compilata con una versione di JDK superiore o uguale alla 1.4 è da intendersi funzionante solamente su tali versioni della JDK, non certo per quelle precedenti.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Originariamente inviato da LeleFT
    Diciamo che se tu compili una tua classe con la JDK 1.4, a priori non è detto che essa funzioni sulle versioni precedenti, quindi non ti dovresti preoccupare di questo problema.
    In secondo luogo, la deprecazione non ha effetto sul compilato: il compilato continua a funzionare anche se fa uso di metodi deprecati. La deprecazione, infatti, comporta solamente un worning in fase di compilazione e non un errore. E' solamente un consiglio per il programmatore che lo usa, che lo avverte del fatto che in futuro il metodo potrebbe non funzionare più.

    Ripeto, comunque, che se la tua classe è stata compilata con una versione di JDK superiore o uguale alla 1.4 è da intendersi funzionante solamente su tali versioni della JDK, non certo per quelle precedenti.


    Ciao.
    Io voglio che l'utilizzo del metodo che vado a deprecare mi crei un warning e non un errore quando compilo una classe che utilizza quel metodo deprecato.
    In tal modo evito di dover eliminare il vecchio costruttore e mi limito a tracciarne l'uso tramite i warning.
    Comunque sono riuscito a risolvere, grazie mille.
    Quindi il tag funziona anche con la 1.2.2 (che è quella che utilizzo per compilare: lo so che è vecchissima ma il progetto che ho in manutenzione è stato sviluppato tempo fa con quella jdk, e prima che si cambi passeranno ancora mesi...)


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 © 2024 vBulletin Solutions, Inc. All rights reserved.