Java集合中的泛型为什么不能Upcasting?

典型的例子是:List<Object> objects = (List<Object>) new List<String>()

可能很多人(包括我在内)起初都会认为这是无法理解的。那么请看下面的代码:

objects.add(new Integer(7));

假设前述的类型转换成立,那么这个objects实例中不就可以加入新的Integer项了?这等于是破坏了List<String>的约束。由于这个反例的存在,所以上述类型转换是不被Java所允许的。

当心应用软件借安装程序绕过UAC

如果你仍像我一样谨慎的依托UAC保护自己的Windows系统,那么就不能不提防一种应用程序常见的绕过UAC保护的伎俩。

通常很多应用软件在安装结束前都会给出一个选项(默认选中),让你可以方便的在安装完成后直接启动之。这时千万不要让它这样做,因为应用软件自身作为安装程序的一个子进程启动,便会继承其父进程的全部既得权限。我们知道,安装程序作为一类特殊的程序,一般都会要求用户赋予其管理员权限以完成正常的安装动作。在它名正言顺的拿到尚方宝剑后,再将其暗度陈仓的传递给安装后的应用程序,这样一来就有机会背着用户越权执行一些危险动作了。

基于上述原因,大家切忌不要允许安装程序结束时直接启动安装后的软件,以防被无良软件所坑害。