Java正在努力向后兼容.(在某种程度上,它使其仿制品瘫痪了).
但有些旧代码无法在较新版本上编译的情况(更重要的是Java 5和即将推出的Java 7)
实际上似乎有相当多的 - 好吧,并非所有这些都会导致编译错误,但这是sun的官方消息:http://java.sun.com/j2se/JM_White_Paper_R6A.pdf
我通常使用这些检查:
在1.4之前,如果文件类型已知并且响应代码大于或等于400,URLConnection.getInputStream会抛出FileNotFoundException.否则将抛出异常
HttpURLConnection.getErrorStream可用于读取从服务器返回的错误页面.在1.4之前,getErrorStream()始终返回null.
DOM接口中添加了新方法,因此某些现有应用程序无法使用新接口进行编译.
现在,应用程序可以将ErrorHandler,EntityResolver,ContentHandler和DTDHandler设置为null.在这种情况下,SAX 2.0要求XML处理器抛出java.lang.NullPointerException.(与大多数实现一样,5.0中实现的JAXP解析器通过使用默认设置对null做出反应.)
DefaultHandler和EntityResolver子类中的resolveEntity方法抛出IOException和SAXException.以前它只抛出SAXException.
在SAX 2.0.1中,应用程序可以将ErrorHandler,EntityResolver,ContentHandler或DTDHandler设置为null.这是SAX 2.0中先前限制的放宽,在这种情况下会生成NullPointerException(NPE).
从5.0开始,XSLTC是默认的转换器,XSLTC不支持Xalan所做的所有扩展.这些扩展超出了JAXP和XSLT规范的定义.
在5.0中,org.apache类已经在5.0中移动到com.sun.org.apache.package.internal,这样它们就不会与更新的,开发人员下载的类版本冲突.
BigDecimal方法在1.4和5.0之间更改了其行为,导致JDBC驱动程序出现故障.
从5.0开始,通过在Timestamp上调用compareTo将java.sql.Timestamp与java.util.Date进行比较会导致ClassCastException.
java.net中添加了java.net.Proxy类,使得两个类名为Proxy:(java.lang.reflect.Proxy,java.net.Proxy)
在1.3和5.0之间的Java语言中添加了以下单词,因此它们不再可用作字段或方法标识符:[assert(在1.4中添加),枚举]
是的,例如在较旧的jdks中使用枚举时:
Enumeration enum = ...
Run Code Online (Sandbox Code Playgroud)
将在1.5之前用jdks编译.
归档时间: |
|
查看次数: |
640 次 |
最近记录: |