-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 に答える