2011-10-21 2 views
0

J'ai une méthode appelée getStrategy dans une classe et attend un tableau comme indiqué.Comment passer un tableau d'objet à une méthode

public static String getStrategy(Hand[] Hand) 
{ 

} 

Et ceci est mon objet main

public class Hand 
{ 
    public char side; 
} 

à mon client, S'il vous plaît me dire comment puis-je passer cette méthode getStrategy ??

J'ai essayé

Hand[] HandArray = new Hand[1]; 

HandArray.side = 's'; 

MyClassUtil.getStrategy(HandArray); 

S'il vous plaît me dire si cela ou non SI CORRECT ??

+5

'HandArray.side = « s »,': Votre compilateur vous dire déjà que ce faux. S'il vous plaît inclure tous les messages d'erreur du compilateur avec ce ou les messages futurs. Ces messages sont généralement très instructifs, et vous voudrez apprendre à les comprendre. Nous pouvons aider. –

+1

Pensez-y logiquement - le tableau lui-même a-t-il un champ 'side'? –

+0

vous devez déclarer un constructeur dans votre classe main afin que vous puissiez faire quelque chose comme 'HandArray [0] = new Hand ('s');' et ce paramètre va initialiser la variable side. – talnicolas

Répondre

5

Eh bien tout sauf la ligne médiane est bien (nommage de côté). Actuellement, votre ligne du milieu essaie d'accéder à un tableau comme s'il s'agissait d'un seul objet. Vous voulez sans doute quelque chose comme:

Hand[] hands = new Hand[1]; 
Hand hand = new Hand(); 
hand.side = 's'; 

hands[0] = hand; 
MyClassUtil.getStrategy(hands); 

Je voudrais aussi vous suggérons fortement pas utilisant des champs publics ...

+0

Par la dernière déclaration de @Jon Skeet, il fait référence au champ char 'taille' . Il est généralement beaucoup plus approprié d'utiliser protégé ici de cette manière, car ils font probablement partie du même espace de noms. Si vous avez besoin de public, créez une variable privée _size et utilisez size comme modificateur public, en le définissant comme private char _size; taille de caractère protégé {public get {return _size; }, définissez {_size = valeur}}. – Michael

+0

Alternativement 'side' pourrait être rendu public final tant qu'il n'avait pas besoin d'être re-défini. Cela ne serait possible que si le constructeur 'Hand' prenait un' char' comme argument bien sûr. –

+0

@KublaiKhan: Cela exposerait toujours un détail d'implémentation (le champ). Normalement, je n'exposerais que les vraies constantes (champs public static final' de types immuables) en tant que variables. –

Questions connexes