2010-03-23 8 views
0

est ici l'exemple de code:Au sein d'une gamme d'objets peut-on créer une nouvelle instance d'un objet à un index?

class TestAO 
{ 
    int[] x; 

    public TestAO() 
    { 
     this.x = new int[5] ; 
     for (int i = 0; i<x.length; i++) 
     x[i] = i; 
    } 

    public static void main (String[]arg) 
    { 
     TestAO a = new TestAO(); 
     System.out.println (a) ;   
     TestAO c = new TestAO() ; 
     c.x[3] = 35 ; 
     TestAO[] Z = new TestAO[3] ; 
     Z[0] = a ; 
     Z[1] = (TestAO b = new TestAO()) ; 
     Z[2] = c ; 
    } 
} 

Quand je tente de compiler ce que je reçois un message d'erreur à la ligne Z[1] qui se lit comme suit:

TestAO.java:22: ')' expected 
     Z[1] = (TestAO b = new TestAO()) ; 
        ^

Ce que je suis en train de faire ici est créer une instance de l'objet TestAO que je veux être dans cet index dans l'affectation de la valeur à cet index au lieu de créer l'instance de l'objet en dehors du tableau comme je l'ai fait avec a.

Est-ce légal et je fais juste une erreur de syntaxe que je ne peux pas voir (causant ainsi le message d'erreur) ou ce que je suis en train de faire ne peut-il pas être fait?

EDIT:

en ce qui concerne la réponse de Mark Voici ma question de suivi:

est-il un moyen plus court pour attribuer des valeurs aux variables d'instance d'un objet dans le tableau de objacts que ceci: (sans écrire des constructeurs spéciaux)

Z[1] = new TestAO() ; 
    Z[1].x[4] = 80085 ; 

Répondre

4

Il est plus facile que vous le pensez:

Z[1] = new TestAO(); 
+0

si je fais bien alors il is't toute référence à l'instance de TestAO bien; il n'y a pas de «a» ou «b» ou «c» ou autre chose. Comment est-ce que je me réfère à lui d'une manière qui n'inclut pas une référence au tableau Z? ou n'ai-je pas besoin de m'inquiéter à ce sujet? – David

+0

Déclarez simplement une référence et faites-la pointer sur Z [1], ou référez-vous simplement à cette variable à partir de là en tant que Z [1] –

+0

@David: Êtes-vous inquiet que l'objet puisse être collecté si vous n'avez pas référence explicite à celui-ci? Ne t'inquiète pas: ça ne sera pas. –

0

Ce que vous faites ici, c'est assigner le résultat d'une affectation à Z [1]. Le type de retour d'une affectation en Java est booléen, donc la façon dont vous le faites ne fonctionnera pas.

Essayez:

Z[1] = new TestAO(); 
1

variables Déclarant comme cela est impossible. Il suffit d'écrire "Z [1] = new TestAO();" et si vous voulez une autre référence "TestAO b = Z [1]";

0

Essayez ceci:

Z[1] = new TestAO() ; 
Questions connexes