Не может относиться к статическому перечислимому полю в инициализаторе?

Если вы хотите выполнить перенаправление внутри скрипта Python, установите sys.stdout в файл-объект, трюк:

import sys
sys.stdout = open('file', 'w')
print 'test'

. Более распространенным методом является использование перенаправления оболочки при выполнении ( то же самое в Windows и Linux):

$ python foo.py > file
43
задан IAdapter 11 February 2009 в 21:52
поделиться

1 ответ

Не "обходите" ошибку - она не сделает то, к чему Вы хотите ее. Ошибка там на серьезном основании.

перечислимые значения инициализируются перед любыми другими статическими полями. Если Вы хотите сделать что-то как добавление всех значений в карту, сделайте это в статическом инициализаторе после все остальное:

import java.util.*;

public enum Foo
{
    BAR, BAZ;

    private static final Map<String, Foo> lowerCaseMap;

    static
    {
        lowerCaseMap = new HashMap<String, Foo>();
        for (Foo foo : EnumSet.allOf(Foo.class))
        {
            // Yes, use some appropriate locale in production code :)
            lowerCaseMap.put(foo.name().toLowerCase(), foo);
        }
    }
}
80
ответ дан Jon Skeet 4 August 2019 в 18:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: