0

请我想序列化几种类型的数组以了解内存中最差的情况。所以我创建了一个函数来序列化一个泛型类型int calcul(T a),它返回一个 int 的大小。

public class NewClass<T> {
    public static void main(String[] args) throws IOException {
       byte[] tabByte = new byte[56666];
       Byte[] tabByte2 = new Byte[56666];
       int[] tabInt = new int[56666];
       ArrayList<Byte> arr=new ArrayList<Byte>(56666);  

       System.out.println("size array byte[]"+calcul(tabByte));
       System.out.println("size array Byte[]"+calcul(tabByte2));
       System.out.println("size array int[]"+calcul(tabInt));
       System.out.println("size array ArrayList<Byte>"+calcul(arr));
    }


    static int calcul(T a) throws IOException {
        ByteArrayOutputStream byteOutput = new ByteArrayOutputStream();
        ObjectOutputStream stream = new ObjectOutputStream(byteOutput);
        stream.writeObject(a);
        int a =  byteOutput.toByteArray().length;
        stream.flush();
        stream.close();
        byteOutput.flush();
        byteOutput.close();    

        return a;
    }

}

但我有这个错误

non-static type variable T cannot be referenced from a static context 

如何将通用变量设为静态并运行我的程序?

4

2 回答 2

2

您可以按照这种方法

static int calcul(T extends Serialazable a) throws IOException;

谢谢

于 2012-10-29T12:50:55.800 回答
1

泛型有什么用?我想你想要

 static int calcul(Serializable a) throws IOException;

并且您应该在冲洗和关闭流之后取其长度。

为了回答您最初的问题,您可以计算(并在此处阅读)原始和包装的 ArrayList 和数组的内存要求(但实验也应该具有指导意义)。

于 2012-10-29T12:46:59.207 回答