请我将几种类型的数组序列化为kwon内存最差的数据。所以我创建了一个序列化泛型类型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
如何将通用变量设为静态并运行我的程序?
答案 0 :(得分:2)
您可以遵循此方法
static int calcul(T extends Serialazable a) throws IOException;
由于
答案 1 :(得分:1)
什么是泛型?我想你想要
static int calcul(Serializable a) throws IOException;
你应该在之后使用的长度来刷新并关闭流。
为了回答你原来的问题,你可以对原始和包装的ArrayLists和数组的内存要求进行计算(并在这里阅读)(但实验也应该具有指导性。)