Visualizzazione dei risultati da 1 a 10 su 18

Discussione: Cast dinamico

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da playbasfa Visualizza il messaggio
    Il problema è che non posso fare il cast dell'oggetto generico a quello specifico perchè l'oggetto specifico viene scelto a runtime, dunque dovrei fare una sorta di cast dinamico.
    Se tutti i possibili tipi di oggetti restituiti hanno un tipo in comune (super-classe comune o una interfaccia comune) e a te basta accedere agli oggetti attraverso questa "astrazione" ... allora fai il cast al tipo comune.

    Altrimenti come dice zipangulu, puoi fare dei test con l'operatore instanceof.

    Però mentre il primo scenario è in linea con la filosofia object-oriented .... il secondo lo è molto di meno (oltre che essere meno bello).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    327
    Grazie per le risposte.
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Se tutti i possibili tipi di oggetti restituiti hanno un tipo in comune (super-classe comune o una interfaccia comune) e a te basta accedere agli oggetti attraverso questa "astrazione" ... allora fai il cast al tipo comune.
    Non è questo il caso..

    Conosci già l'insieme di classi da scegliere a runtime? Sono classi che crei tu?
    Queste classi vengono aggiunte (già compilate) dall'esterno, durante il run del programma.
    Motivo per cui non posso conoscere a priori quale classe devo adoperare ma solo a runtime, da qui l'esigenza di farlo dinamicamente.

    Per quanto riguarda instanceOf, sto leggendo la documentazione.

    Io vorrei fare una cosa del genere
    Codice PHP:
    MiaClasse obj1 =(MiaClassemetodo(Stringa); 
    dove MiaClasse è determinata a runtime e non posso conoscerla a priori.

    Attualmente ciò che sono riuscito a fare è:
    Codice PHP:
    Object obj1 metodo(Stringa);
    Method met=obj1.getClass().getMethod("getPosition");
    Object m met.invoke(obj1); 
    Io vorrei invece avere accesso a tutti i possibili metodi, non solo a getPosition.

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.