Не могу понять почему не работает Array List: class java.util.Arrays$ArrayList cannot be cast to class java.util.ArrayList
Выдает ошибку
Exception in thread "main" java.lang.ClassCastException: class java.util.Arrays$ArrayList cannot be cast to class java.util.ArrayList (java.util.Arrays$ArrayList and java.util.ArrayList are in module java.base of loader 'bootstrap')
at List1.list(Okruzhnost.java:29)
at Okruzhnost.main(Okruzhnost.java:22)
не понимаю, как это исправить. подскажите пожалуйста, что я делаю не так
public class Okruzhnost{
public static void main(String[] args) {
int x1 = 5,y1 = 6,x2 =7, y2=10;
int dx=5; int dy=5;
Okruzhnost1 tom = new Okruzhnost1();
tom.print1();
tom.line();
tom.dx();
tom.line();
tom.move(dx, dy);
tom.print();
List1 List = new List1();
List.list();
}
}
class List1{
void list() {
ArrayList<String> list;
list = (ArrayList<String>) Arrays.asList(new String[] {"a", "b" ,"c"});
System.out.println("Размер массива равен" +
Integer.valueOf(list.size())+ "элементами");
}
}
......
class Okruzhnost1{
...}
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Arrays.asList()вернет объект классаArrayListкоторый является внутренним приватным статическим классом (private static class) класса Arrays, а это не классjava.util.ArrayList. Классjava.util.Arrays.ArrayListсодержит методыset(),get(),contains(), но не содержит никаких методов для добавления элементов, его размер фиксирован.
Можно не конвертировать тип и работать через List:
class List1{
void list() {
List<String> list = Arrays.asList(new String[] {"a", "b" ,"c"});
System.out.println("Размер массива равен " + list.size() + " элементами");
}
}
Но если нужен ArrayList<String>:
class List1{
void list() {
ArrayList<String> list = new ArrayList<String>(Arrays.asList(new String[] {"a", "b" ,"c"}));
System.out.println("Размер массива равен " + list.size() + " элементами");
}
}
PS.
В Arrays.asList можно вместо массива передавать параметрами:
Arrays.asList("a", "b" ,"c")