Размер объекта неизвестного типа - PullRequest
1 голос
/ 31 октября 2010

Я должен получить размер объекта, тип которого я не знаю. Это шаблон, в котором я хочу получить что-то вроде этого:

 void sth(T data)
 {
    System.out.println("Data size = ", sizeof(data));
 }

Как я могу сделать это на Java?

sizeof - как C sizeof;)

Ответы [ 2 ]

1 голос
/ 31 октября 2010

Это не простая задача.Вы должны использовать Java Instrumentation.

Здесь является примером.

0 голосов
/ 30 сентября 2011

Наконец я использовал этот кусок кода:

private int getSize(Object data) {
        int size = 0;
        try {
            ByteArrayOutputStream bout = new ByteArrayOutputStream();
            ObjectOutputStream stream = new ObjectOutputStream(bout);
            stream.writeObject(data);
            stream.close();
            size = bout.size();
        } catch (IOException e) {
            System.err.println("error: " + e.getMessage());
        }
        return size;
    }
...