Почему нельзя передать объекты в массив подобным образом?
public class elem {
private int num;
}
public class mas {
public elem[] elemMas = new elem[3];
}
public class process {
mas mOne = new mas();
elem eOne = new elem();
elem eTwo = new elem();
elem eThree = new elem();
mOne.elemMas[0] = eOne;
mOne.elemMas[1] = eTwo;
mOne.elemMas[2] = eThree;
}
public class main {
public static void main(String[] args) {
process pOne = new process();
}
}
В классе process компилятор ругается следующим образом:
process.java:6: error: ']' expected
mOne.elemMas[0] = eOne;
^
process.java:6: error: ';' expected
mOne.elemMas[0] = eOne;
^
process.java:6: error: illegal start of type
mOne.elemMas[0] = eOne;
^
Вы присваиваете значения элементам массива в теле класса. В теле класса переменные могут только объявляться.
То, что вы хотите сделать, можно реализовать двумя способами:
1) С помощью блока инициализации:
public class process {
mas mOne = new mas();
elem eOne = new elem();
elem eTwo = new elem();
elem eThree = new elem();
{
mOne.elemMas[0] = eOne;
mOne.elemMas[1] = eTwo;
mOne.elemMas[2] = eThree;
}
}
2) С помощью конструктора:
public class process {
mas mOne = new mas();
elem eOne = new elem();
elem eTwo = new elem();
elem eThree = new elem();
process() {
mOne.elemMas[0] = eOne;
mOne.elemMas[1] = eTwo;
mOne.elemMas[2] = eThree;
}
}
Кстати, имена классов стоит писать с заглавной буквы.
В теле класса не разрешены операции записи в массив, можно сделать это в конструкторе:
public class process {
mas mOne = new mas();
public process() {
elem eOne = new elem();
elem eTwo = new elem();
elem eThree = new elem();
mOne.elemMas[0] = eOne;
mOne.elemMas[1] = eTwo;
mOne.elemMas[2] = eThree;
}
}
может Вы хотели вот это: ,т.е. вернуть неизменяемый класс, с точно финально определенными экземплярами Elem в массиве?
public class mmm {
public static void main(String[] args) {
Process pOne = Process.getInstance();
System.err.println("доступ к массиву например к length" + pOne.getMas().elemMas.length);
for (int i=0; i<pOne.getMas().elemMas.length; i++){
System.out.println("класс в массиве : " + i);
System.out.println(Arrays.toString(pOne.getMas().elemMas));
}
}
}
class Elem{
private int num;
public Elem(int num) {
this.num = num;
}
@Override
public String toString() {
return "Elem{" +
"num=" + num +
'}';
}
}
class Mas{
public Elem[] elemMas = new Elem[3];
{
Elem eOne = new Elem(1);
Elem eTwo = new Elem(2);
Elem eThree = new Elem(3);
elemMas[0]=eOne;
elemMas[1]=eTwo;
elemMas[2]=eThree;
}
}
class Process{
private static Process process = new Process();
private Mas mas;
public Mas getMas() {
return mas;
}
public static Process getInstance(){
process.mas = new Mas();
return process;
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Я пишу программу, которая выстраивает пирамиду из отсортированных чисел и возвращает двумерный массив
Всем привет! Ищу помощь у тех, кто сталкивался с подобной задачей или у тех, кто знает, как ее решить
Проблема в том, что при выполнение нового запроса на сервер после прокручивания у меня список полностью обновляется, необходимо, чтобы он добавлялся...