2017-03-25 2 views
-1

Ich konnte keine neuen Elemente in der Standard-Array-Liste hinzufügen .. jemand hilft mir. Ich habe für die letzten 2 Tage darüber gesucht, aber ich konnte die Logik nicht verstehen dahinterElement zur Standard-Arraylist hinzufügen

public class User { 

private int id; 
private String name; 

public User(int id, String name) { 
    this.id = id; 
    this.name = name; 
} 

}

public class User2 { 

public static List<User> list = new ArrayList<>(); 

public User2(int i, String abc){ 
    list.add(new User(1,"abc")); 
    list.add(new User(2,"bcd")); 
} 

public List<User> getList() { 
    return list; 
} 

public void setList(List<User> list) { 
    this.list = list; 
} 

public static void main(String[] args) { 
    User2 user2 = new User2(3,"def"); 
    List<User2> usr = new ArrayList<>(); 
    usr.add(user2); 

    list.add((User) usr); 

    for(User temp: list){ 
     System.out.println(" listing "+temp); 
    } 

} 

}

+1

'keine neuen Elemente hinzufügen '- bitte erläutern. –

+1

Welches ist die "Standard-Array-Liste"? – 4castle

+0

'list.add ((Benutzer) usr)' wirft 'usr' auf einen' Benutzer'. 'usr' ist eine' Liste '. Kannst du mir bitte erklären, warum du das machst und was du denkst? –

Antwort

1

list.add((User) usr); wird ein ClassCastException als usr provozieren, die nicht sehr gut benannt ist ein List. Und ein User kann nicht zu einem List Typ umgewandelt werden.

Was Sie brauchen, ist das Hinzufügen der Array-Listenelemente in einem anderen:

list.addAll(usr); 

Ein lesbarer Code wäre:

User2 user2 = new User2(3,"def"); 
List<User2> listToAdd = new ArrayList<>(); 
listToAdd.add(user2); 
// add the local list elements to the static field list 
list.addAll(listToAdd); 
+1

Danke .. ich habe es – Babu

1

In dieser Zeile:

list.add((User) usr); 

Sie Versuchen Sie, eine List<User2> in eine User zu werfen. Es wird nicht funktionieren. Ich denke, was der Fehler dir sagen muss.

Aber ich könnte sehen, was Sie tun möchten. In Java können Sie keine User2 übergeben, die keine Verbindung mit User zu einer List<User> hat. Sie müssen eine gemeinsame Schnittstelle definieren und beide Klassen implementieren. Oder machen Sie die Klasse User2 erweitern Sie die Klasse User.

+0

Ich bin Anfänger bitte erklären Sie in Code – Babu

+0

Siehe @davidxxx's Beitrag. Außerdem denke ich, dass Sie 'extend User' nach' public class User2' hinzufügen müssen. Dies bedeutet, dass "Benutzer2" ein "Benutzer" ist und dass ein "Benutzer2" überall dort verwendet werden kann, wo ein "Benutzer" erwartet wird. – Drestin