Я должен получить размер объекта, тип которого я не знаю. Это шаблон, в котором я хочу получить что-то вроде этого:
void sth(T data) { System.out.println("Data size = ", sizeof(data)); }
Как я могу сделать это на Java?
sizeof - как C sizeof;)
Это не простая задача.Вы должны использовать Java Instrumentation.
Instrumentation
Здесь является примером.
Наконец я использовал этот кусок кода:
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; }