http://java.sun.com/j2se/1.5.0/docs/api/java/io/StringBufferInputStream.html,我用翻译器说deprecate是“反对”(我是这样理解的)的意思。我想我好象应该没有会错意吧。但如果是的话那是什么意思?

解决方案 »

  1.   

    理解的不错,出现这个是因为在JDK1.4(如果你用的是的话)中已经不建议使用你选用的那个类,在新版本中已经使用了新类来代替原来的那个类.
    比如:
    java.awt.ToolKit.getFontMetrics(Font font) 
       Deprecated. As of JDK version 1.2, replaced by the Font method getLineMetrics.
    这个方法,在deprecated后面的意思是说到1.2版本,这个类已经被getLineMetrics取代,编译器建议使用后面这个新方法
      

  2.   

    java中有不少这样的类和方法,已经有了更好的替代品,以后可能逐渐不支持了,能不用尽量不要用
      

  3.   

    之所以没有从联机文档中删除掉,那时因为至少目前还支持。
    否则,如果一个很老的程序调用了这个函数(那时这个函数还没有被标记为“Deprecated”),程序也编译通过了,也运行了好多年了。那么后来的读程序的人可能会很奇怪:怎么调用了一个JavaDoc中没有的函数却照样可以编译通过?
      

  4.   

    所以,标记位Deprecated的目的应该是:第一,老的程序如果没有升级的愿望,那就让它去吧,当然,我会告诉你这个函数的用处以及参数、返回值说明,使你偶然在老程序里看到时不至于莫名奇妙,第二,对于以后开发的新程序,就不要用了。
      

  5.   

    如果新的 JDK 或 JRE 去掉了这些方法,那么老程序在新 JRE 上运行就会出错, 
    它的存在只是 为了兼容已编译的 二进制 而保留, 
    新写的代码千万不要用,免得总是用有问题的东西, 这些一般是因为有 Bug 或性能 或安全问题,或者类层次结构不清晰而调整设计等,如果没有非要用老 JRE 的必要 就使用新的东西代替, 不要使用 带 @deprecated 警告的, 有些涉及到安全问题的类或方法在新版本实现中已经 去掉了,比如  HttpSessionContext ,有返回值的方法 全都返回 null , 或者 throw new UnsupportedOperationException("已经因为安全问题不再提供");