Student.java 使用或覆盖了已过时的 API。

Student.java 使用或覆盖了已过时的 API。,第1张

分类: 电脑/网络 >>电脑常识

问题描述:

最近刚迷上java就碰到了这个问题编译是没什么问题.import java.io.*import java.awt.*import java.util.*class Student{public String newStudent(){File f1=new File ("F:/data.txt")if(f1.exists()){try{FileInputStream fis=new FileInputStream(f1)DataInputStream dis=new DataInputStream(fis)while(dis.available()>0){String str=dis.readLine()System.out.println(str)}System.out.println("读出完毕")fis.close()}catch(Exception e){System.out.println("Error:"+e.toString())}return "读出完毕" }try{System.out.println("请输入学生的信息:(以End回车结束)")DataInputStream dis=new DataInputStream(System.in)Vector theVector=new Vector()String str=dis.readLine()while (!str.equalsIgnoreCase("END")){theVector.addElement(str)str=dis.readLine()}FileOutputStream fos=new FileOutputStream(f1)for(int i=0i<theVector.size()i++){fos.write(theVector.elementAt(i).toString().getBytes())fos.write(13)fos.write(10)}fos.close()System.out.println("写入完毕")}catch (Exception e){System.out.println(e.toString())}return "ok"}public static void main(String args[]){String s=newStudent()Student FRWC=new Student()FRWC.newStudent()}}来个高手帮帮忙哈```注意:Student.java 使用或覆盖了已过时的 API。注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。注意:Student.java 使用了未经检查或不安全的 *** 作。注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。

解析:

不使用或覆盖已过时的 API 的好并肆李处是:

a)能提高程序在未来的 Java 平台上成功运行的几率,因为已过时的 API 将来很可能不再被支持。

b)程序绝迟可能更稳定、更安全雹仔、更高性能、更易懂、更易维护,因为 Java 里总有能代替每一个已过时的 API 的更好的 API 或技巧(详情全在 API 文档里。用 -Xlint:deprecation 重新编译即能查出所有代码里使用或覆盖的已过时的 API)。

得不到上述的好处不是很大的问题,所以对于 deprecation 编译器只警告不报错。

当然,完美的编译是最好的,且一般不难。以你的 Student.java 为例:

1)用 -Xlint:deprecation 重新编译:

javac -Xlint:deprecation Student.java

你将看到:

Student.java:19: 警告:[deprecation] java.io.DataInputStream 中的 readLine() 已过时

String str=dis.readLine()

^

Student.java:39: 警告:[deprecation] java.io.DataInputStream 中的 readLine() 已过时

String str=dis.readLine()

^

Student.java:43: 警告:[deprecation] java.io.DataInputStream 中的 readLine() 已过时

str=dis.readLine()

^

2)有了那么针对性的信息即能轻易地获取 API 文档中的建议。

以这个页面上的文档为例:shorterlink/?RFPWC9。

当中的建议是改用 BufferedReader.readLine( )。

做了相关方面的修改的代码如下(被替代的代码被包在 /* 和 */ 里):

import java.io.*

import java.util.*

class Student {

public String newStudent() {

File f1 = new File("F:/data.txt")

if (f1.exists()) {

try {

FileInputStream fis = new FileInputStream(f1)

/* DataInputStream dis = new DataInputStream(fis)

while (dis.available() >0) {

String str = dis.readLine()

System.out.println(str)

}*/

BufferedReader br = new BufferedReader(new InputStreamReader(fis))

for (String s(s = br.readLine()) != null)

System.out.println(s)

System.out.println("读出完毕")

fis.close()

} catch (Exception e) {

System.out.println("Error:" + e.toString())

}

return "读出完毕"

}

try {

System.out.println("请输入学生的信息:(以End回车结束)")

/*DataInputStream dis = new DataInputStream(System.in)*/

BufferedReader br = new BufferedReader(new InputStreamReader(System.in))

Vector theVector = new Vector()

/*String str = dis.readLine()

while (!str.equalsIgnoreCase("END")) {

theVector.addElement(str)

str = dis.readLine()

}*/

for (String s = br.readLine()! s.equalsIgnoreCase("END")s = br.readLine())

theVector.add(s)

FileOutputStream fos = new FileOutputStream(f1)

for (int i = 0i <theVector.size()i++) {

fos.write(theVector.elementAt(i).toString().getBytes())

fos.write(13)

fos.write(10)

}

fos.close()

System.out.println("写入完毕")

} catch (Exception e) {

System.out.println(e.toString())

}

return "ok"

}

public static void main(String args[]) {

String s=newStudent()

Student FRWC = new Student()

FRWC.newStudent()

}

}

出现这个提示的本质原因是:在御告你的源代码中镇手明,使用JDK中的类的时候,调用了已经过时的方法。所谓过时方法,是有些没有真正实现的方法,或存在潜在问题的方法。这些方法一般情况下,目前的JDK还支持,但在未来的某个版本中,可能就会取消的。所以,在本地使用的代码不必担心这个问题;要移值到其它计算机的程序必须要解决这个问题。

这些过时的方法在JDK的更高版本中,绝对大多数提供了替换方法,少部分是要放弃了。想改好程序,就要找到能够替代的方法,来修改代码。能替代的方法查阅API文档就能看到,在方法目录中,过时的方法有“薯辩已过时”的说明,在方法明细里能看到被哪个方法代替了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12439841.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存