javadoc @link

Я сомневаюсь, что Вы хотите сделать это программно, если Вы просто не хотите сделать это однажды и сохранить его для будущего использования. Это - дорогостоящая вещь сделать. Нет никакого sizeof () оператора в Java, и даже если бы было, это только считало бы стоимость ссылок на другие объекты и размер примитивов.

Один способ, которым Вы могли сделать это, состоит в том, чтобы сериализировать вещь в Файл и посмотреть на размер файла, как это:

Serializable myObject;
ObjectOutputStream oos = new ObjectOutputStream (new FileOutputStream ("obj.ser"));
oos.write (myObject);
oos.close ();

, Конечно, это предполагает, что каждый объект отличен и не содержит непереходные ссылки ни на что больше.

Другая стратегия состояла бы в том, чтобы взять каждый объект и исследовать его участников отражением и сложить размеры (булевская переменная & байт = 1 байт, короткий & символ = 2 байта, и т.д.), прокладывая себе путь вниз иерархия членства. Но это утомительно и дорого и заканчивает тем, что делало то же самое, которое сделала бы стратегия сериализации.

26
задан AlbertoPL 14 July 2009 в 13:56
поделиться

2 ответа

What происходит, когда вы ссылаетесь на copy (T []) вместо copy (Object []) ? На моей машине это работает.

11
ответ дан 28 November 2019 в 17:29
поделиться

Ссылка на # copy1 создает ссылку на внутреннюю привязку для вашего метода copy1 (). Куда еще вы его ожидали?

0
ответ дан 28 November 2019 в 17:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: