Перечисление объявляется вне объема класса

Я думаю, что Вы хотите этот http://pgl.yoyo.org/luai/i/io.popen io.popen. Но это не всегда компилируется в.

12
задан Denys Séguret 24 November 2012 в 09:31
поделиться

5 ответов

It's not just enums. Enums are just special kinds of classes. In general you can have multiple classes declared in one file (as long as no two of them are public).

10
ответ дан 2 December 2019 в 19:55
поделиться

Нет, без модификатора доступа перечисление является частным для пакета. Это означает, что его могут использовать только классы в одном пакете. И вы не можете сделать это только с помощью перечисления, классы также можно сделать закрытыми для пакетов.

Дополнительная информация: http://java.sun.com/docs/books/tutorial/java/javaOO/ accesscontrol.html

6
ответ дан 2 December 2019 в 19:55
поделиться

Иногда эта идиома может быть разумной - например, представьте, что у вас есть класс UploadHandler (или что-то в этом роде), который может возвращать статус загрузки. Мне кажется вполне возможным реализовать этот статус в виде перечисления - и поскольку перечисление (например, UploadStatus ) явно «принадлежит» классу UploadHandler, его можно объявить в том же исходном файле. (Это, конечно, предполагает, что он должен быть только приватным для пакета - если он действительно общедоступен, его нужно будет объявить в собственном файле, что, вероятно, имело бы смысл, если бы он больше не был внутренним).

Как такое случается, в этом случае я, вероятно, сделал бы его статическим внутренним классом, чтобы сделать отношения более явными. Но объявление нескольких классов в одном исходном файле - это не так. t всегда плохо и иногда может улучшить удобочитаемость, устанавливая ожидание, что это пограничный, вспомогательный класс. (К тому же я не думаю, что такие классы должны делать что-то особенно сложное или неожиданное.)

1
ответ дан 2 December 2019 в 19:55
поделиться

Перечисление определяет список значений констант, которые могут быть присвоены определенному типу. Это может быть как внутри класса, так и вне его.

0
ответ дан 2 December 2019 в 19:55
поделиться

It compiles actually, on my Eclipse ! ;-)

Several classes are allowed to be in the same file. The limitation is that a public class has to be defined in a file that has the same name.

It's visibility is 'package', so it should be visible in other classes in the same package too.

What can I do with that enum?

You can do anything you want with the above limitations...

Note : although you had it wrong, you shouldn't feel too bad, because it's not really a good practice either. In our CheckStyle configuration, outer classes in the same file like this are treated as errors !!

0
ответ дан 2 December 2019 в 19:55
поделиться
Другие вопросы по тегам:

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