2017-05-05 4 views
-3

Dies ist eine Interviewfrage: Es gibt ein benutzerdefiniertes PERSON-Objekt mit Eigenschaften wie Name, Alter, Geschlecht usw. Schreiben Sie eine generische Funktion, die die Größe zurückgeben kann dieses Objekt. Es sollte keine direkte API von Java verwenden, um die Größe von Object zu erhalten. Dieses Objekt kann int, float, char oder einen beliebigen benutzerdefinierten Typ wie Adresse haben.Hilfefunktion zum Zurückgeben der Größe eines benutzerdefinierten Objekts in Java

+0

Wie wäre es, die Summe aller Größen der Klasse zurückgeben? – Nathan

+0

[Diese Antwort könnte Ihnen helfen] (http://stackoverflow.com/a/52682/3143670) –

+1

Das ist keine gute Frage (bitte [ask]), aber dann bin ich eigentlich an Antworten interessiert. Was ich nicht wirklich bekomme ist, was * "keine direkte API von Java verwenden soll" * bedeutet genau. – domsson

Antwort

1

In Java kann man sagen, dass die Größe eines Objekts der Summe der Größe seiner Elemente (mit Ausnahme von statischen) sehr nahe kommt.

Beachten Sie, dass die primitiven Wrapper, wenn Sie java8 verwenden, ein Feld Bytes public static haben, das die Größe des Grundelements in Byte darstellt.

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

Wenn Sie nicht Java8 verwenden, können Sie einige davon verwenden.

  • anObject.getClass() isPrimitive();
  • anObject.getClass(). GetFields();
  • Rekursion.

Sie sollten auch vorsichtig von bytes alignement sein, auch bekannt als ein 7-Byte-langen Elemente auf 8-Bit-Segmenten platzieren, aber das wird Ihre JVM abhängig und ist eher eine Hardware-Frage.

Verwandte Themen