1. ホーム
  2. java

[解決済み] javaが非推奨のAPIを使用またはオーバーライドしているエラー

2022-01-28 03:13:53

質問

こんにちは、これは私のコードです、どういうわけか私はまだそこに私が説明したエラーを取得します、任意の助けは感謝されるだろう。私はこれのインポート、特に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.

ありがとうございました :)

どのように解決するのですか?

これらはエラーではなく、あなたのコードがコンパイルされたことを示す警告です。

これらの行を説明するために.

注:MyClass.javaは非推奨のAPIを使用またはオーバーライドしています。

の呼び出しをやっているんですね。 DataInputStream#readLine これは、ドキュメントによると、JDK 1.1以降、非推奨となっています。

非推奨。
このメソッドはバイトを適切に変換しません。 文字になります。JDK 1.1 では、テキストの行を読み取るには、以下の方法が推奨されています。 BufferedReader.readLine()メソッドで行います。を使用するプログラムでは DataInputStream クラスを使用して行を読み取るように変換することができます。 BufferedReaderクラスのコードに置き換えることで、以下のようになります。

DataInputStream d = new DataInputStream(in);   

を使っています。

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

2行目に関しては.

注意:詳細は-Xlint:deprecationで再コンパイルしてください。

これは、非推奨のものを使用している場所についての詳細を得るために、コンパイル時に使用するオプションを指示するだけです。

編集する。

あなたのコメントに従って、あなたのコードがどのように見えるか、ここに。

import java.io.InputStreamReader;//Add these two imports
import java.io.BufferedReader;
...
BufferedReader br = new BufferedReader(new InputStreamReader(bis));//Use BufferedReader as suggested by the doc instead of DataInputStream
...
String s = br.readLine();//Read with the non-deprecated readLine of BufferedReader