2017-05-05 79 views
-3

這是一個面試問題: 有一個自定義的PERSON對象,它具有一些屬性,如姓名,年齡,性別等。編寫一個通用函數,它可以返回大小這個對象。它不應該使用任何Java的直接API來獲取Object的大小。該對象可以具有int,float,char或任何類似地址的自定義類型。幫助函數返回java中自定義對象的大小

+0

如何返回類的所有大小的總和? – Nathan

+0

[這個答案可能會幫助你](http://stackoverflow.com/a/52682/3143670) –

+1

這不是一個好問題(檢查[問]],但是再一次,我真的對答案感興趣。我真正得不到的是*「不應該使用任何Java的直接API」*的意思。 – domsson

回答

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,又名放置7個字節長的元素在8位段,但這將取決於您的JVM和更是一個硬件問題。