Helper函数返回java中自定义对象的大小

时间:2017-05-05 12:30:18

标签: java

这是一个面试问题: 有一个自定义PERSON对象,它有一些属性,如名称,年龄,性别等。编写一个可以返回此对象大小的泛型函数。它不应该使用Java的任何直接API来获取Object的大小。该对象可以包含int,float,char或任何自定义类型,如地址。

1 个答案:

答案 0 :(得分:1)

在java中,对象的大小可以说非常接近其成员大小的总和(静态除外)。

请注意,如果您正在使用java8,则原始包装器具有一个字段Bytes公共静态,它表示基元的大小(以字节为单位)。

来源:http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html

如果您不使用Java8,可以使用其中一些:

  • anObject.getClass()isPrimitive();
  • anObject.getClass()getFields();
  • 递归。

您还应该注意bytes alignement,即在8位段上放置一个7字节长的元素,但这取决于您的JVM,而且更像是一个硬件问题。