Я сомневаюсь, что Вы хотите сделать это программно, если Вы просто не хотите сделать это однажды и сохранить его для будущего использования. Это - дорогостоящая вещь сделать. Нет никакого sizeof () оператора в Java, и даже если бы было, это только считало бы стоимость ссылок на другие объекты и размер примитивов.
Один способ, которым Вы могли сделать это, состоит в том, чтобы сериализировать вещь в Файл и посмотреть на размер файла, как это:
Serializable myObject;
ObjectOutputStream oos = new ObjectOutputStream (new FileOutputStream ("obj.ser"));
oos.write (myObject);
oos.close ();
, Конечно, это предполагает, что каждый объект отличен и не содержит непереходные ссылки ни на что больше.
Другая стратегия состояла бы в том, чтобы взять каждый объект и исследовать его участников отражением и сложить размеры (булевская переменная & байт = 1 байт, короткий & символ = 2 байта, и т.д.), прокладывая себе путь вниз иерархия членства. Но это утомительно и дорого и заканчивает тем, что делало то же самое, которое сделала бы стратегия сериализации.
What происходит, когда вы ссылаетесь на copy (T [])
вместо copy (Object [])
? На моей машине это работает.
Ссылка на # copy1 создает ссылку на внутреннюю привязку для вашего метода copy1 (). Куда еще вы его ожидали?