LINUX.ORG.RU

А элементы массива кто за тебя создавать будет?

Begemoth ★★★★★ ()
Ответ на: комментарий от Begemoth

Кроме этого у него по идее не должно компилироваться

vertexua ★★★☆☆ ()
Ответ на: комментарий от Begemoth

Хм, я не пробовал, но думал что его криптический вопрос заключается в том, почему это вдруг внутренний класс, который требует инстанс родительского обьекта для создания не может быть создан в статическом контексте

vertexua ★★★☆☆ ()
Ответ на: комментарий от vertexua

Нестатичность класса Vert не имеет значения, он же его экземпляры не создаёт :-) А при исправлении конечно же это проявится на что компилятор и укажет.

Begemoth ★★★★★ ()
Ответ на: комментарий от vertexua
public class test {

        static class Vert {
            Vert (float x, float y, float z) {
                 X = x;
                 Y = y; 
                 Z = z;
            }
            float X, Y, Z;
        }

        static Vert[] data = new Vert[3];
        public static void main(String[] args) {
                data[2] = new Vert(1, 2, 3);
                System.out.print(Float.toString(data[2].X)) ;
        }
}

йе? ;)

aol ★★★★★ ()
Ответ на: комментарий от Begemoth

>А элементы массива кто за тебя создавать будет?

Я же один элемент создал data[2].X = 10.0f; и выделил память static Vert[] data = new Vert[3];

sniper21 ★★★★★ ()
Ответ на: комментарий от sniper21

Это память не выделяет. Оно выделяет память под 3 ссылки. Обьекты создавай в цикле

vertexua ★★★☆☆ ()
Ответ на: комментарий от vertexua

>Это память не выделяет. Оно выделяет память под 3 ссылки. Обьекты создавай в цикле

Ясно, на каком-то сайте в статье было сказано что создаёт.

sniper21 ★★★★★ ()
Ответ на: комментарий от sniper21

на каком-то сайте в статье было сказано что создаёт.

Э-э, а ты Хорстмана «Core Java» читать не пробовал?

Begemoth ★★★★★ ()
Ответ на: комментарий от Begemoth

Спасибо за совет. Почитаю. просто трудно изучить что-то, когда полно ошибок в описаниях...

sniper21 ★★★★★ ()
Ответ на: комментарий от sniper21

В Java нет структур, поэтому для массивов из объектов (даже таких простых как Vert) всегда возникает дополнительная косвенная адресация, т.к. массив хранит только ссылки.

Даже всякие извращения придумывают, чтобы хранить массив простых объектов сплошным куском в памяти.

kamre ★★★ ()

не заморачивайся с иннер-классами, а также с классовыми переменными (если конечно это не необходимо), как минимум на процессе начального изучения. Всё гораздо проще. Даже если не хочешь создавать объекты в куче всем элементам массива - можешь создать и один (но тогда проверяй на нуль и не допускай NPE в коде!)

public class test {

	public static void main(String[] args) {
		Vert[] data = new Vert[3];
		data[2] = new Vert();
		data[2].X = 10.0f;
		System.out.print(Float.toString(data[2].X)) ;
	}
}

class Vert {
	float X, Y, Z;
}
[[/code]]

или

public class test1 {

	public static void main(String[] args) {
		Vert[] data = new Vert[]{null,null,new Vert()};
		data[2].X = 10.0f;
		System.out.print(Float.toString(data[2].X)) ;
	}
}

class Vert {
	float X, Y, Z;
}
[[/code]]
anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.