26

次の投稿されたコードで、Android で「try-with-resources はこの言語レベルではサポートされていません」という問題があり、言語を 7 に設定しようとしましたが、それでも同じ例が表示され続け、さらにオプションが表示され続けます言語 7 に変更します。

public String ReadFile(String fileName) {

    try (BufferedReader br = new BufferedReader(new FileReader(fileName+".txt"))) {
        StringBuilder sb = new StringBuilder();
        String line = br.readLine();

        while (line != null) {
            sb.append(line);
            sb.append(System.lineSeparator());
            line = br.readLine();
        }

        String everything = sb.toString();
        return everything;
    } catch (FileNotFoundException ex) {
        Logger.getLogger(SaveNLoadRank.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(SaveNLoadRank.class.getName()).log(Level.SEVERE, null, ex);
    }
    return "1";
}
4

2 に答える 2

46

try-with-resourcesminSdkVersionは、が 19 以上に設定されている場合にのみサポートされます。

あなたのアプリケーションが最小 API バージョン 19 以上 (2014 年 6 月時点) をサポートしているとは思えないので、それがあなたの問題である可能性があります。

Java 7 言語機能のサポートは、2014 年 3 月にリリースされた SDK ツール リビジョン 22.6 で追加されました (こちらを参照)。ただし、try-with-resourcesは、以前のバージョンの Android に導入できる機能ではないため、その機能を使用するアプリケーションは 19 以降で実行する必要があるため、minSdkVersion要件です。

更新 任意の API で try-with-resources を使用できるようになりました。

上記の Java 8 言語機能と API に加えて、Android Studio 3.0 以降では、try-with-resources のサポートがすべての Android API レベルに拡張されています。

サポートされている Java 8 言語機能の使用を開始するには、Android プラグインを 3.0.0 (またはそれ以降) に更新します。その後、Java 8 言語機能を (ソース コード内または依存関係を通じて) 使用する各モジュールについて、図 2 に示すように [プロジェクト構造] ダイアログで [ソース互換性] と [ターゲット互換性] を 1.8 に更新します ([ファイル] > [プロジェクト構造] をクリックします)。

https://developer.android.com/studio/write/java8-support.html

于 2014-06-18T16:39:07.643 に答える
2

API 19 未満ではサポートされていませんが、15 およびおそらく 14 でも動作すると報告されています: https://code.google.com/p/android/issues/detail?id=73483

于 2016-10-05T10:08:02.967 に答える