针对接口,而不是具体类.这是为什么象 cblib 这样提供这种机制的库,被如此多的主流 框架,如 Spring 和 Hibernate,采用的原因.此外,由于 cglib 通过运行时创建被代理类的 子类来实现的, 因此这些种方式有一个众所周知的限制——不能代理 final 类, 比如 String. 9,差劲的 Switch...case 语句:Java 规定,switch...case 只能选择 int 和 enum(Java5 开始).这一点如果跟更现代的语言如 Scala 相比,看起来简直太弱了. 10,受检查异常(Checked exception):类似原生类型,受检查异常也已经成为 Java 的一 个罪孽之源.它迫使程序员必须做下面两件极其糟糕讨厌的事情中的一个:让你的代码里充 斥大量的,糟糕难读的,容易出错的 try...catch 语句,而这样做的最大意义,只是将捕获 的异常,包装成运行时异常,然后再重新抛出;或者是让大量的抛出声明子句污染你的 API, 让接口缺少灵活性和可扩展性. 真正的问题是,这里我提到的这几大主要问题,唯一的解决办法,是要做一个痛苦的决择, 定义一套新的语言规范,放下当前版本的向后兼容性.我猜他们永远也不会这么做,虽然我 相信,如果编写一个能够自动转换旧 Java 源码的程序,让它们与假设的新版本兼容,并不是 很困难.最后,这就是我决定开始寻找一个更好的 JVM 兼容语言的原因. 原文:10 good reasons to look for something better than Java