#Java
类型转换与反射(Java)
类型转换&检查
类型转换
强制类型转换
强制类型转换通过
(NewType)
形式实现类型的强制转换。如下例所示,将aList
强制转换为ArrayList
类型。List aList = new ArrayList(); ArrayList anArrayList = (ArrayList) aList;
Class对象(Java)
关于Class对象,需要了解的是:
- 每个类都有一个Class对象
- 默认情况下,类通过“原生类加载器”从磁盘中加载;可以挂接其他的类加载器
- Java采用动态加载机制;类在第一次被访问静态成员时被加载,从这个角度上讲,可以认为构造器为类的静态方法
ObjectOutputStream追加写入导致读取报错的问题分析
问题现象:使用ObjectOutputStream向同一个文件写入多个对象,
A). 当ObjectOutputStream在打开后连续写入多个对象再关闭,可通过ObjectInputStream正常读取写入的多个对象;
B). 当每写入一个对象即关闭ObjectOutputStream并在写入下一个对象时重新打开,通过ObjectInputStream读取对象时,可以正常读取第一个对象,但读取第二个对象时报错。典型的报错信息如下:
Exception in thread "main" java.io.StreamCorruptedException: invalid type code: AC at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.readObject(Unknown Source) at com.demo.ObjectSerializationDemo.writeObjectsSeparately(ObjectSerializationDemo.java:69) at com.demo.ObjectSerializationDemo.main(ObjectSerializationDemo.java:17)
RSA加/解密的Java实现
RSA算法是一种常用的非对称加密算法。所谓非对称性,是指加/解密的过程中需要两个不同的密钥——公钥和私钥,通过公钥对数据加密,通过私钥对密文解密。RSA算法的可靠性是建立在大数因数分解的难度上的。在数论中,对极大整数做因数分解的难度极大,因此决定了RSA算法的高可靠性。若想了解RSA算法的数学原理,可参考WIKI:RSA加密算法和RSA算法原理(一,二)
本文介绍在Java中实现RSA的加/解密操作。(测试环境:Windows OS, jdk_1.7.0_25)