2010-03-07 5 views
0

Le code ci-dessous dans Java renvoie une exception de pointeur null. La raison étant, java passe des références d'objets par valeur. Si je voulais retourner un objet, je peux le renvoyer de la fonction. Mais, si j'ai plusieurs objets, la seule façon de renvoyer les références d'objet est, en les gardant dans un autre objet, d'avoir un conteneur qui a des références à tous les objets.Java Objet Oriented Design: Renvoyer plusieurs objets dans Java

Y a-t-il une meilleure façon de le faire?

En C++, je passe simplement l'adresse du pointeur pour gérer ce scénario. Si je voulais juste retourner deux objets d'un seul type, créer un conteneur et le passer est un over kill.

Quel est le problème de renvoyer plusieurs objets d'une fonction? Pourquoi la sémantique de la fonction dans toutes ces langues ne peut-elle pas être modifiée?

+0

Est-ce une question de devoirs? – monksy

+1

Cela ne devrait pas être New n = new New(); au lieu de New n = null; ?? – Zaki

+0

Évidemment, ce n'est pas une question de devoirs. – Boolean

Répondre

2

Le plus souvent, vous créez un objet pour contenir la combinaison d'objets que vous souhaitez renvoyer. Pour une solution plus générale, vous pouvez renvoyer une collection et un tableau ou une sorte de tuple, tel que Pair, Triple, etc. (ce dernier que vous devrez créer).

Note, vous ne passez généralement pas un objet mutable comme paramètre, mais un retour un immuable:

public Pair<Integer,Integer> getLowHighTemp() { 
    int      low,hgh; 

    // do stuff... 
    return new Pair(low,hgh); 
    } 
1

C'est plus de 2 questions qu'une. Tout d'abord, le problème avec votre code est que vous ne déclarez pas n avant de l'utiliser. C'est jeter l'exception. Deuxièmement, si vous souhaitez renvoyer 2 objets, vous devez avoir un objet conteneur qui contiendra 2 objets.

0

Vous pouvez retourner une sorte de Collection. Retourner un Map ou List est assez commun.