Reputation: 15082
I have thhis few lines of code:
Set<Group> setofAllGroups;
setofAllGroups = new TreeSet<Group>();
Group[] allGroupsArray = (Group[]) setofAllGroups.toArray();
the last line causes a runtime error, in debug mode I get "Source not found"
the code for the class Group:
public class Group
{
String groupName;
Set<Recipient> groupMembers;
public Group()
{
groupName = "";
groupMembers = new TreeSet<Recipient>();
}
public void setGroupName(String name)
{
groupName = name;
return;
}
public void addMember(Recipient toAdd)
{
groupMembers.add(toAdd);
return;
}
public void addMember(String name, String phoneNumber)
{
Recipient toAdd = new Recipient(name, phoneNumber);
groupMembers.add(toAdd);
return;
}
public void removeMember(Recipient toRemove)
{
groupMembers.remove(toRemove);
}
public void removeMember(String name, String phoneNumber)
{
Recipient toRemove = new Recipient(name, phoneNumber);
groupMembers.remove(toRemove);
}
public void removeAllGroupMembers()
{
groupMembers.clear();
}
}
What is the reason for the runtime error ?
Upvotes: 0
Views: 405
Reputation: 9162
Quick answer is that you cannot cast like that:
Group[] allGroupsArray = (Group[]) setofAllGroups.toArray();
Instead you have to use this:
Group[] allGroupsArray = setofAllGroups.toArray(
new Group[setofAllGroups.size()]);
That's because toArray() returns Object[] and after that you try to cast Object[] to Group[]. This fails.
Upvotes: 2