2017-03-25 37 views
-1

我一直无法在默认数组列表中添加新元素..有人帮助我。我寻觅它的最后2天,但我无法理解的逻辑背后将元素添加到默认数组列表

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

'无法添加新元素' - 请解释。 –

+1

哪一个是“默认数组列表”? – 4castle

+0

'list.add((User)usr)'将'usr'强制转换为'User'。 'usr'是'List '。你能解释你为什么这么做,你认为它做了什么? –

回答

1

list.add((User) usr);将挑起ClassCastException作为usr不是很名字是List。并且User不能转换为List类型。

你需要的是将数组列表中的元素在另外一个什么:

list.addAll(usr); 

一个更可读的代码如下:

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

谢谢..我知道了 – Babu

1

在这一行:

list.add((User) usr); 

你尝试将List<User2>投射到User。它不会工作。我认为这个错误必须告诉你。

但我可能会看到你想要做什么。在Java中,您无法将与User没有任何关联的User2传递给List<User>。您需要定义一个通用接口并使两个类都实现它。或者让类User2扩展类User

+0

我是初学者请在代码中解释 – Babu

+0

请参阅@davidxxx的文章。此外,我认为你需要在'public class User2'之后添加'extends User'。这意味着'User2'是'User',而'User2'可以在'User'的任何地方使用。 – Drestin