ByteArrayMaker-字节数组构造类
package com.zxt.basic.util; import java.io.ByteArrayOutputStream; /** * * 类名称:ByteArrayMaker * 类描述: 字节数组构造类 * 创建人: * 创建时间:Sep 17, 2012 1:46:10 PM * 修改人: * 修改时间:Sep 17, 2012 1:46:10 PM * 修改备注: * @version 1.0.0 * */ public class ByteArrayMaker extends ByteArrayOutputStream { static boolean collect = false; static { String collectString = System.getProperty(MakerStats.class.getName()); if (collectString != null) { if (collectString.equals("true")) { collect = true; } } } static MakerStats stats = null; static { if (collect) { stats = new MakerStats(ByteArrayMaker.class.toString()); } } static int defaultInitSize = 8000; static { String defaultInitSizeString = System.getProperty( ByteArrayMaker.class.getName() + ".initial.size"); if (defaultInitSizeString != null) { try { defaultInitSize = Integer.parseInt(defaultInitSizeString); } catch (Exception e) { e.printStackTrace(); } } } public static MakerStats getStatistics() { return stats; } public ByteArrayMaker() { super(defaultInitSize); if (collect) { _getInfo(new Throwable()); } } public ByteArrayMaker(int size) { super(size); if (collect) { _getInfo(new Throwable()); } } public byte[] toByteArray() { if (collect) { stats.add(_caller, _initSize, count); } return super.toByteArray(); } public String toString() { return super.toString(); } private void _getInfo(Throwable t) { _initSize = buf.length; StackTraceElement[] elements = t.getStackTrace(); if (elements.length > 1) { StackTraceElement el = elements[1]; _caller = el.getClassName() + StringPool.PERIOD + el.getMethodName() + StringPool.COLON + el.getLineNumber(); } } private int _initSize; private String _caller; }