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

来源:百度知道 编辑:UC知道 时间:2024/05/15 07:40:03
最近刚迷上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 (!st

 
 
 
不使用或覆盖已过时的 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();