Visualizzazione dei risultati da 1 a 5 su 5

Discussione: estendere classe final

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755

    estendere classe final

    Partendo dal fatto che java non permette , come è giusto che sia , di estendere una classe "final" (final class BlaBlaBla) vi chiedo se esiste una qualche procedura equivalente che mi permetta di ottenere una sorta di estensione di una tale classe.
    In pratica ho una classe di una libreria esterna che è chiusa (per chiusa intendo che è final) io vorrei estenderla nel senso di aggiungerle alcuni metodi..c'è un modo per farlo?

  2. #2
    ho trovato questo link vedi se ti può essere utile.

    http://www.cosenonjaviste.it/le-clas...abili-in-java/

    Ciao
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

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

    Re: estendere classe final

    Originariamente inviato da zipangulu
    Partendo dal fatto che java non permette , come è giusto che sia , di estendere una classe "final" (final class BlaBlaBla) vi chiedo se esiste una qualche procedura equivalente che mi permetta di ottenere una sorta di estensione di una tale classe.
    Solo con 'extends' ovviamente no, come ben sai e hai detto.

    Ci possono essere delle scappatoie ma dipende da cosa devi fare e dove poi servono gli oggetti di questa tua "estensione". Chiamiamo FC quella classe final. Se essa implementa una interfaccia I, ad esempio, e le istanze di FC servono a te (o alla libreria o altrove) solo "vedendole" come I, se quello che vuoi fare è una specie di "override", nessuno ti vieta di fare una tua classe X che implementa I e che funge da "wrapper" per un oggetto I (o anche specificatamente per FC). Le invocazioni dei metodi le "passi" pari-pari sull'oggetto wrappato, tranne quelli che vuoi tu, che puoi alterare.
    Ed è chiaro che se da qualche parte serve un oggetto che IS-A FC, questa soluzione non va bene.

    Originariamente inviato da zipangulu
    In pratica ho una classe di una libreria esterna che è chiusa (per chiusa intendo che è final) io vorrei estenderla nel senso di aggiungerle alcuni metodi..c'è un modo per farlo?
    Potresti specificare esattamente quale classe, di quale libreria? E esattamente che metodo vuoi fare e perché?
    Con queste informazioni si potrebbero fare ulteriori ragionamenti e si potrebbe valutare se ha senso o no la tua richiesta e se sì come si può risolvere il tuo problema.


    P.S. il link indicato da schumy2000 non ti sarà utile, perché lì si parla di classi "immutabili", cioè di classi che definiscono oggetti il cui stato non cambia ... che è un'altra cosa dal concetto di estendibilità o no.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755

    Re: Re: estendere classe final

    Originariamente inviato da andbin
    Potresti specificare esattamente quale classe, di quale libreria? E esattamente che metodo vuoi fare e perché?
    Con queste informazioni si potrebbero fare ulteriori ragionamenti e si potrebbe valutare se ha senso o no la tua richiesta e se sì come si può risolvere il tuo problema.
    Innanzitutto grazie per la risposta.
    La classe è LargeInteger di una libreria esterna , il metodo che avrei voluto "aggiungere" è "isProbablePrime"..troverai più dettagli a quest'altro mio post , è collegato.

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

    Re: Re: Re: estendere classe final

    Originariamente inviato da zipangulu
    Innanzitutto grazie per la risposta.
    La classe è LargeInteger di una libreria esterna , il metodo che avrei voluto "aggiungere" è "isProbablePrime"..troverai più dettagli a quest'altro mio post , è collegato.
    Ok, ho visto la documentazione javadoc di quella libreria. Nella documentazione di LargeInteger non lo dice (e non ho guardato il sorgente) ma la classe è "final" immagino per un valido motivo: perché definisce presumo oggetti "immutabili" (qui ha senso quella pagina linkata da schumy2000 ma vorrei precisare che il "final" è solo uno dei possibili aspetti che permette di realizzare dei buoni oggetti immutabili).

    Se la motivazione è quella, dal punto di vista di chi ha scritto LargeInteger, è assolutamente sensato e appropriato aver messo "final".

    Io personalmente ti consiglierei di non cercare di sovvertire in qualche modo quella classe. Se serve solo a te nel tuo progetto, magari fai una tua classe di "utilità" es. PrimeUtils con un metodo statico isProbablePrime. Ho visto nell'altra discussione che hai già fatto questo metodo statico. Ripeto che, secondo me, non tenterei una estensione di LargeInteger in nessun modo.

    Poi ovviamente ... vedi tu.
    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.