java使用或覆盖已弃用的API错误

时间:2015-08-01 13:33:20

标签: java deprecated

您好,这是我的代码,不知怎的,我仍然得到错误,我描述错误,任何帮助将不胜感激。我并不擅长导入这个,尤其是API本身

   import java.io.BufferedInputStream;
    import java.io.DataInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;

    public class MyClass {

        public static void main(String[] args) throws IOException {
            File file = new File("Sinatra.txt");
            FileInputStream fis = new FileInputStream(file);
            BufferedInputStream bis = new BufferedInputStream(fis);
            DataInputStream dis = new DataInputStream(bis);

            if (dis.available() != 0) {
                // Get the line.
                String s = dis.readLine();
                // Put words to array.
                String[] sParts = s.split(" ");
                // Initialize word longest length.
                int longestLength = 1;
                for (String strx : sParts) { // Go through each sPart, the next one is called strx
                    // If the document has word longer than.
                    if (longestLength < strx.length())
                        // Set new value for longest length.
                        longestLength = strx.length();
                }
                // Because array index from "0".
                int[] counts = new int[longestLength + 1];
                for (String str : sParts) {
                    // Add one to the number of words that length has
                    counts[str.length()] += 1;
                }
                // We use this type of loop since we need the length.
                for (int i = 1; i < counts.length; i++) {
                    System.out.println(i + " letter words: " + counts[i]);
                }
            }
        }
    }

    // Result:
    //        1 letter words: 0
    //        2 letter words: 2
    //        3 letter words: 0
    //        4 letter words: 1
    //        5 letter words: 0
    //        6 letter words: 2
    //        7 letter words: 2
    //        8 letter words: 0
    //        9 letter words: 3

您好这是我的代码,当我尝试编译它时,我得到了 错误说:

Note: MyClass.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

感谢您的帮助:)

2 个答案:

答案 0 :(得分:1)

那些不是错误,它们是警告,你的代码已编译。

解释这些内容:

  

注意:MyClass.java使用或覆盖已弃用的API。

您正在调用func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { return someEstimatedNumberWhichIsClose; } ,自JDK 1.1以来已根据文档弃用:

  

<强>已过时。
  此方法无法正确转换字节   字符。从JDK 1.1开始,读取文本行的首选方法是   通过BufferedReader.readLine()方法。使用的程序   DataInputStream类读取行可以转换为使用   BufferedReader类通过替换表单的代码:

DataInputStream#readLine

使用:

DataInputStream d = new DataInputStream(in);   

至于第二行:

  

注意:使用-Xlint重新编译:弃用以获取详细信息。

它只是告诉您在编译时使用的选项,以获取有关您使用弃用内容的更多详细信息。

修改:

根据您的评论,这里的代码如下:

BufferedReader d = new BufferedReader(new InputStreamReader(in));

答案 1 :(得分:1)

从DataInputStream API文档:

  

的readLine()

     

已过时。

     

此方法无法将字节正确转换为字符。从JDK 1.1开始,读取文本行的首选方法是通过BufferedReader.readLine()方法。使用DataInputStream类读取行的程序可以通过替换表单的代码转换为使用BufferedReader类:

     

DataInputStream d = new DataInputStream(in);

     

使用:        BufferedReader d = new BufferedReader(new InputStreamReader(in));

您可以在代码中的String s = dis.readLine()行中看到,您使用了弃用的方法。这意味着有更好的选择来做你正在做的事情(如上所述)。即使该方法已被弃用,但在某些情况下它可能会起作用。但是不能保证不再履行合同,因此最好使用类似但一致的BufferedReader.readLine()方法。