枚举类:
public enum EnumSingleTon {
/**
* 唯一实例
*/
uniqueEnum(),;
}
主函数:
public static void main(String[] args) throws Exception {
EnumSingleTon uniqueEnum = EnumSingleTon.uniqueEnum;
//反射攻击,(枚举的构造函数默认是私有的)
//这里int.class,基本类型还能这么用,长见识了
Constructor<? extends EnumSingleTon> declaredConstructor = uniqueEnum.getClass().getDeclaredConstructor(String.class, int.class);
declaredConstructor.setAccessible(true);
//newInstance()方法中会判断类此构造器所属类是否有enum修饰,如果有,禁止实例 if ((clazz.getModifiers() & Modifier.ENUM) != 0)
// EnumSingleTon enumSingleTon = declaredConstructor.newInstance("secondObj", 2);// IllegalArgumentException
/**
* 所以,以上证明枚举可以抵御反射攻击
*/
//序列化攻击
File file = new File("my.txt");
FileOutputStream fileOutputStream