黑马程序员技术交流社区
标题:
谁能帮我解释一下啊,看不明白
[打印本页]
作者:
欢欢
时间:
2014-4-14 17:53
标题:
谁能帮我解释一下啊,看不明白
本帖最后由 欢欢 于 2014-4-14 21:20 编辑
看到张孝祥老师高新的第47个视频了:编写自己的解密类加载器,
有以下两处不明白的地方,请看注释:
@Override
protected Class<?> findClass(String name) throws ClassNotFoundException {
String classFileName = classDir + "\\" + name + ".class";
try {
FileInputStream fis = new FileInputStream(classFileName);
ByteArrayOutputStream bos = new ByteArrayOutputStream();//1.不明白这里为什么要用ByteArrayOutputStream???
cypher(fis,bos);
fis.close();
byte[] bytes = bos.toByteArray();//2.这步也不明白???
return defineClass(bytes, 0, bytes.length);
} catch (Exception e) {
e.printStackTrace();
}
return super.findClass(name);
}
复制代码
作者:
呆呆沙师妹
时间:
2014-4-14 19:50
本帖最后由 呆呆沙师妹 于 2014-4-14 19:51 编辑
Java默认的整型数据为int,在调用read方法时会自动将byte字节提升为int类型,故cypher方法中写入数据时要^0xff,选用ByteArrayOutputStream类,是因为该类内部封装了buf的字节数组,方便用来存储字节数据,而toByteArray是该类提供的方法,能创建一个新分配的 byte 数组。其大小是此输出流的当前大小。这样在定义bytes时,就直接将新分配的byte数组地址赋值给bytes,就不用自己指定数组大小,避免浪费。
作者:
云浮
时间:
2014-4-14 20:02
我怀疑你io流那章就没有看
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2