-1

我有一个仅由以下原始类型组成的类:

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。

4

1 回答 1

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);,它仍然是可行的,但是您需要使用反射来获取有关信息你应该只在绝对必要的情况下使用它。

于 2013-07-23T19:15:41.523 回答