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

minSdkVersion仅当您的设置为 19 或更高时才支持try-with-resources 。

由于我怀疑您的应用程序是否支持 19 或更高版本的最低 API 版本(2014 年 6 月),这可能是您的问题。

2014 年 3 月发布的 SDK 工具修订版 22.6 中添加了对 Java 7 语言功能的支持(请参见此处)。但是,try-with-resources并不是一个可以为以前的 Android 版本引入的功能,因此使用该功能的应用程序必须在 19+ 上运行,因此是minSdkVersion要求。

更新 您现在可以将 try-with-resources 与任何 API 一起使用。

除了上述 Java 8 语言功能和 API,Android Studio 3.0 及更高版本将对 try-with-resources 的支持扩展到所有 Android API 级别。

To start using supported Java 8 language features, update the Android plugin to 3.0.0 (or higher). After that, for each module that uses Java 8 language features (either in its source code or through dependencies), update the Source Compatibility and Target Compatibility to 1.8 in the Project Structure dialog as shown in figure 2 (click File > Project Structure).

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

于 2014-06-18T16:39:07.643 回答
2

It is not supported below API 19, but it reportedly works on 15 and maybe even 14: https://code.google.com/p/android/issues/detail?id=73483

于 2016-10-05T10:08:02.967 回答