LINUX.ORG.RU

Ответ на: комментарий от 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 ★★★★★
() автор топика
Ответ на: комментарий от vertexua

вот, блин, не туда ткнул.. пардон ;))

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

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

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

sniper21 ★★★★★
() автор топика
Ответ на: комментарий от 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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.