Files
CustomNPC-Plus/src/main/java/noppes/npcs/util/SizeOfObjectUtil.java
T
2024-03-17 23:15:11 -04:00

35 lines
1.3 KiB
Java

package noppes.npcs.util;
import java.lang.reflect.Field;
public class SizeOfObjectUtil {
public static long sizeOfObject(Object obj) {
long size = 0;
for (Field field : obj.getClass().getDeclaredFields()) {
try {
field.setAccessible(true);
Class<?> type = field.getType();
if (type == int.class || type == Integer.class) {
size += Integer.BYTES;
} else if (type == long.class || type == Long.class) {
size += Long.BYTES;
} else if (type == byte.class || type == Byte.class) {
size += Byte.BYTES;
} else if (type == boolean.class || type == Boolean.class) {
size += 1; // Assuming 1 byte for boolean
} // Add more cases for other primitive types if needed
else {
// If it's a reference type, recursively calculate its size
Object value = field.get(obj);
if (value != null) {
size += sizeOfObject(value);
}
}
} catch (IllegalAccessException e) {
// Handle exception
}
}
return size;
}
}