我有一个只包含以下基本类型的类:
public class Test{
private int a1; //size of int =4
private long a2; //size of long = 8
private double a3[]; //size of double =8
}
此外,我有这样一个对象:
Test test= new Test(1,3,new double[] {0.1, 0.2, 0.3, 0.4});
我想有一个能够找到这个对象大小的函数,在这种情况下它会返回4 + 8 + 4 * 8 = 44。
答案 0 :(得分:1)
如果我正确理解了这个问题,那么你可以自己轻松实现这个问题,但是我们走了:
public class Test {
private int a1;
private long a2;
private double a3[];
public Test(final int a1, final long a2, final double[] a3) {
this.a1 = a1;
this.a2 = a2;
this.a3 = a3;
}
public int getSize() {
return 4 + 8 + (a3.length * 8);
}
}
还有一些注意事项:
Test
作为类名,你应该使用类似SizeTest
之类的东西,但如果你决定对其进行单元测试或其他什么,那么简单测试最终会造成严重破坏。如果你正在寻找一个通用函数,那么事情变得更加困难,在这种情况下,你会寻找一个带有跟随签名的方法:SizeTester.getSize(Object object);
,它仍然是可行的,但你需要然后使用Reflection来获取有关字段的信息,如果绝对必要,你应该只使用它。