2016-08-14 2 views
3

Es klingt einfach, aber ich habe versucht, es irgendwann für ganz zu tun, ist I want to initialize my custom class object array using curly bracesWie initialisiert man ein Array von benutzerdefinierten Klassenobjekten?

Hier das ausgefallene Beispiel:

Klasse:

class Tranforminfo{ 
     int left; 
     int top; 
     int right; 
     int bottom; 
     float rorate; 

     public Tranforminfo(int left, int top, int right, int bottom, float rorate) { 
      this.left = left; 
      this.top = top; 
      this.right = right; 
      this.bottom = bottom; 
      this.rorate = rorate; 
     } 
    } 

Verbrauch: (nicht korrekt)

// attempt 1 
Tranforminfo somedamn = new Tranforminfo[]{(1,2,3,4,5),(6,4,3,5,6)}; 

// attempt 2 
Tranforminfo somedamn = new Tranforminfo[]{{1,2,3,4,5},{6,4,3,5,6}}; 

// attempt 3 
Tranforminfo somedamn = new Tranforminfo[]((1,2,3,4,5),(6,4,3,5,6)); 

Kein Glück bisher geschätzt helfen, ich bin Codierung in Android (JAVA)

+0

Lesen Sie unsere schöne neue Docs Seite http: //stackoverflow.com/documentation/java/99/arrays/404/creating-and-initializing-arrays#t=201608141953434615501 ... – Tunaki

+0

Versuch 1 ist die nächste : 'Tranforminfo [] somedamn = neue Tranforminfo [] {neue Tranforminfo (1,2,3,4,5), neue Tranforminfo (6,4,3,5,6)};'. (Sie können aber auch die 'neue Tranforminfo []' löschen. –

+0

ich muss für jeden neu schreiben? das ist komisch C/C++ hätte das erlaubt –

Antwort

6

es gibt einige Möglichkeiten, es zu tun:

Transforminfo[] somedamn = 
    new Transforminfo[] { new Transforminfo(1,2,3,4,5), 
          new Transforminfo(6,4,3,5,6) }; 
Transforminfo[] somedamn = 
    { new Transforminfo(1,2,3,4,5), new Transforminfo(6,4,3,5,6) }; 

Zuerst erstellen Sie Transforminfo Array-Link, dann fügen Sie neue Transforminfo Elemente hinzu.

Es ist wie Integer []array = {1, 2, 3}, aber Sie müssen Konstruktor verwenden, um Transforminfo Elemente zu erstellen.

Ein weiteres Beispiel zu Array von Objekt erstellen zu verstehen. Der Weg ist gleich.

String array[] = { new String("str1"), new String("str2") }; 
String[] array = { new String("str1"), new String("str2") }; 
String array[] = new String[] { new String("str1"), new String("str2") }; 
String[] array = new String[] { new String("str1"), new String("str2") }; 
+0

Strings sind wirklich seltsame Bestien, die hier als Beispiel dienen. '... {new String (" str1 "), ...' erstellt in den Beispielen ein neues Objekt im Heap aber 'String [] array = {" str1 "," str2 "};' würde das [ String-Konstantenpool] (http://stackoverflow.com/a/3052456/6178459) – Arjan

1
Transforminfo[] somedamn = {new Transforminfo(1,2,3,4,5), new Transforminfo(1,2,3,4,5)}; 

Transforminfo[] wird einen Link zu einem Array von Transforminfo erstellen und mit der {...} Sie die aktuellen Array erstellen (einer speziellen Java-Syntax und tatsächlich die kürzeste)

Was Sie taten, war: Sie erstellt eine Verknüpfung zu einem Transforminfo Objekt und versucht, diesen Link zu einem Array-Objekt zu setzen

+0

Ein wenig mehr Erklärung würde nicht schief gehen. Was macht das und wie macht es das? – Tunaki

Verwandte Themen