Подтвердить что ты не робот

Частное размещение enum внутри класса в Java

При объявлении перечисления внутри класса в java я видел эти два подхода:

1)

public class MyClass {

    private enum MyEnum {
        A, B, C;
    }

    /* Static fields */

    /* Instance variables */

    /* Methods */
}

2)

public class MyClass {

    /* Static fields */

    /* Instance variables */

    /* Methods */

    private enum MyEnum {
        A, B, C;
    }
}

Какой из них наиболее часто используется? Есть ли какое-либо соглашение для этого?

4b9b3361

Ответ 1

Как правило, в Java вложенные типы данных (например, классы, перечисления) идут в нижней части файла.

Однако, если коротко, частные перечисления, подобные тому, который вы опубликовали (которые больше похожи на поля), я бы пошел С# 1.

Для более длинных перечислений я либо перехожу С# 2, либо помещаю их в отдельный файл.

Ответ 2

Для этого не существует никакого соглашения, но из того, что я видел, пример 1 используется чаще. Я лично размещаю их так же.

Ответ 3

В Java нет оператора typedef (как в C и С++). Чтобы объявить новые типы в Java, вы объявляете новый класс; то переменные могут быть объявлены такими типами классов. Кроме того, Java использует Прямые ссылки, java-компилятор более умный, чем компилятор C, поскольку он позволяет использовать методы перед их определением. Это устраняет необходимость объявлять функции в файле заголовка, прежде чем определять их в программном файле, как это делается на C.

Я могу разместить мой enum в любом месте и получить доступ к нему из любого места. См. Пример.

class CheckEnum{

    private void method1() {
        System.out.println(enumTest.test1);    
    }       
    private enum enumTest{
        test1
    }       
    private void method2() {
        System.out.println(enumTest.test1);
    }
}

Я проверил, и оба метода method1 и method2 имеют доступ к enumTest.

Ответ 4

Нет ничего плохого в любом из них. Это скорее вопрос, но я бы пошел # 1.