Если Вы всегда используете перечисления вместо констант в Java

Не могли бы вы просто сделать

if (Session::has('your_key'))
{
  //your code here
}

Обновить ответ

Определение наличия элемента в сеансе

Чтобы определить, есть ли элемент присутствует в сеансе, вы можете использовать метод has. Метод has возвращает true, если элемент присутствует и не равен нулю:

if ($request->session()->has('users')) {
    //
}

Чтобы определить, присутствует ли элемент в сеансе, даже если его значение равно null, вы можете использовать [114 ] метод. Метод exist возвращает true, если элемент присутствует:

if ($request->session()->exists('users')) {
    //
}
12
задан Raedwald 2 July 2014 в 07:00
поделиться

6 ответов

Не знайте о Java, но в.NET хорошая практика должна поместить перечисления параллельно в класс, который использует их, даже если это используется одним единственным классом. Таким образом, Вы записали бы:

namespace Whatever
{
    enum MyEnum
    {
    }
    class MyClass
    {
    }
}

Таким образом можно использовать:

MyClass c = new MyClass(MyEnum.MyValue);
2
ответ дан 2 December 2019 в 04:25
поделиться

Вы усложнили его слишком много. Давайте объединим все это.

Java 1.5 сообщения необходимо использовать Класс Enum Java:

public enum Color
{
    BLACK, WHITE;
}

Пред Java 1.5 необходимо использовать безопасный с точки зрения типов Перечислимый шаблон:

public class Color
{
    public static Color WHITE = new Color("white");
    public static Color BLACK = new Color("black");

    private String color;

    private Color(String s)
    {
        color = s;
    }
}

Обоими способами Вы называете его как так:

drawBackground(Color.WHITE);

А именно, относительно Вашего вопроса. Это - вопрос стиля кода, но я думаю, что предпочтительный путь состоит в том, чтобы сохранить перечисления в их отдельных классах. Особенно, после того как они начинают получать свои собственные методы как getName(), getId(), и т.д. Думайте о нем как о той же дилемме как регулярный класс по сравнению с анонимным классом, когда-то класс начинает быть нарушенным, пора выгнать его с квартиры в свой собственный файл.

27
ответ дан 2 December 2019 в 04:25
поделиться

Вы знали, что можно импортировать Ориентацию и сказать

MyClass myClass = new MyClass(Orientation.VERTICAL);

?

5
ответ дан 2 December 2019 в 04:25
поделиться

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

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

У Вас может также быть два статических метода для MyClass:

MyClass.Vertical() : MyClass
MyClass.Horizontal() : MyClass

Они возвратят новый экземпляр с надлежащим перечислимым набором.

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

Я соглашаюсь, что Вы были творческими, но я думаю, что это не практическое решение, и я думаю, что Вы просто сместили "уродство" к другой части кода. Что происходит, если в дополнение к ВЕРТИКАЛЬНОМУ и ГОРИЗОНТАЛЬНОМУ, у Вас также будут ДИАГОНАЛЬ, AA, BB, CC, и т.д.? Вы оказываетесь перед необходимостью копировать путем ввода каждой статической константы? Ваш вкус, что MyClass. Ориентация. ВЕРТИКАЛЬНЫЙ ужасно, могло бы быть персональным?

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

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