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

    [Java] Ritorno di oggetti di tipo diverso

    Salve a tutti. Come faccio in un metodo a ritornare due oggetti di tipo diverso? ad esempio nella signature dichiaro che il tipo di oggetto di ritorno è un int, ma dentro al metodo, in base a quello ke succede, alla fine può ritornare anke un tipo String...come faccio x fare in modo ke li possa ritornare tutti e 2? ecco il mio caso specifico:
    codice:
    	public Scheda getScheda(int code) throws NotPresentException{
    		Iterator<Scheda> it = sch.iterator();
    		Iterator<SchedaDitta> it2 = schDit.iterator();
    		SchedaDitta di = null;
    		Scheda sc = null;
    		boolean presente=false;
    		boolean presente2=false;
    		while(it.hasNext()){
    			Scheda s = it.next();
    			if(s.getNum()==code){
    				sc=s;
    				presente=true;
    			}			
    		}	
    		while(it2.hasNext()){
    			SchedaDitta d = it2.next();
    			if(d.getNum()==code){
    				di=d;
    				presente2=true;
    			}			
    		}
    		if(presente==false || presente2==false){
    			throw new NotPresentException();			
    		}else {
    			if (presente==true){
    				return sc;
    			}else if (presente2==true){
    				return di;
    			}
    		}
    		
    	}
    Il tipo dikiarato di return è Scheda, ma può ritornare anke una SchedaDitte, ke è diversa...come posso fare? grazie.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,305
    La cosa è alquanto bizzarra, messa così, però puoi dichiarare il metodo in modo che ritorni un Object.

    A questo punto il tuo metodo può tornare qualsiasi cosa (tranne tipi di dato primitivo, se non opportunamente wrappati).

    Esempio:
    codice:
    public Object ritornaTutto(int tipo) {
       Object ritorno = null;
       switch (tipo) {
          case 0:   // Sarà un intero
             ritorno = new Integer(5);
             break;
          case 1:   // Sarà una stringa
             ritorno = "La mia stringa"
             break;
          case 2:   // Sarà una Finestra
             ritorno = new JFrame();
             break;
          ...
       }
       return ritorno;
    }
    ...
    
    public void mioMetodo() {
       String s = (String) ritornaTutto(1);
    }
    Solitamente questo tipo di metodi, però, ritornano tutti oggetti coerenti (non nel caso dell'esempio).
    Nel caso in cui gli oggetti siano coerenti, solitamente si usa creare una superclasse per essi e tante classi derivate per ciascuno dei tipi che si desidera specializzare. Il metodo, poi, tornerà genericamente un oggetto della superclasse.


    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

  3. #3
    mi da mille errori in questo modo! ho lasciato perdere facendo un altro metodo in cui ritorna l'altro tipo e differenziando un pò il frame ke lo usa...grazie lo stesso

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.