2010-10-30 2 views
1

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

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

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

SizeOf - как C SizeOf;)

+4

Что вы подразумеваете под 'sizeof'? В Java обычно нет понятия «размер» объекта или ссылки. – Avi

+0

Что вы пытаетесь достичь? Вот почему вам нужно знать размер java-объекта? –

+0

Мне пришлось проверять объем отправки данных через другую библиотеку. Я сделал это, наконец, используя сериализацию. – mmatloka

ответ

0

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

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; 
    } 
1

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

Here - пример.

+0

, но будет ли это работать, когда T двойной (не двойной)? – mmatloka

+1

Этого не может быть. Вы не можете написать сигнатуру метода, которая может принимать любой тип java и предоставлять ее как этот тип, если вы включаете примитивные типы. – EJP

Смежные вопросы