-2

このエラーが発生する生成されたクラスが 1 つあります。このクラス内には、1 つの巨大な静的ブロック (5000 行以上) があります。ブロックをいくつかの小さな静的ブロックに分割しましたが、それでもこのエラーが発生しました。何故ですか

編集 コードは次のようになります。

private static final Map<Object, Object> nameMap = Maps.newHashMap();
static{
    nameMap.put(xxx);
    .... 5000 similar lines
    nameMap.put(xxx);
}
4

1 に答える 1

3

単なるデータの場合は、リソースからデータを読み取る必要があります。

データ ファイルがクラス ファイルと同じ場所に配置されるように調整し、次のようなものを使用します。

class Primes {

    private static final ArrayList<Integer> NUMBERS = new ArrayList<>();
    private static final String NUMBER_RESOURCE_NAME = "numbers.txt";

    static {
        try (InputStream in = Primes.class.getResourceAsStream(NUMBER_RESOURCE_NAME);
                InputStreamReader isr = new InputStreamReader(in);
                BufferedReader br = new BufferedReader(isr)) {
            for (String line; (line = br.readLine()) != null;) {
                String[] numberStrings = line.split(",");
                for (String numberString : numberStrings) {
                    if (numberString.trim().length() > 0) {
                        NUMBERS.add(Integer.valueOf(numberString));
                    }
                }
            }
        } catch (NumberFormatException | IOException e) {
            throw new IllegalStateException("Loading of static numbers failed", e);
        }
    }
}

これを使用して、1000 個の素数のコンマ区切りリストを読み取ります。

于 2013-09-10T21:51:44.250 に答える