Частное размещение 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;
}
}
Какой из них наиболее часто используется? Есть ли какое-либо соглашение для этого?
Ответы
Ответ 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.