Почему или почему бы не использовать instanceof для проверки, если не null

Я просто задаюсь вопросом, есть ли веская причина или практика использования != null вместо instanceof для проверки того, что что-то имеет значение null.

Является ли плохой практикой проверять, имеет ли значение null значение instanceof?

Например:

View view = ((Activity) context).findViewById(viewID);
                                if (view instanceof  View) {
                                    listener.onView(view, viewID);
                                }

или

View view = ((Activity) context).findViewById(viewID);
                            if (view != null) {
                                listener.onView(view, viewID);
                            }

Разве это не должно быть так же?

-1
источник поделиться
4 ответа

Это зависит от того, что вы на самом деле проверяете

  • Если вы просто хотите знать, является ли ссылка null, используйте x == null и ничего больше
  • Если вы хотите узнать, не является ли конкретная ссылка не null и указывает на экземпляр типа Foo вы можете использовать x instanceof Foo поскольку это означает, что он не является null

    Но если тип ссылки для компиляции уже Foo, вы знаете, что экземпляр имеет тип Foo когда он non- null, поэтому в этом случае применяется первая пуля; вы просто хотите проверить значение null. Это тот случай, в обновленных вопросах, например, ссылка уже имеет тип время компиляции View.

  • Если вы хотите узнать, будет ли тип cast (Foo)x успешным, вы можете использовать x == null || x instanceof Foo x == null || x instanceof Foo поскольку тип cast также будет успешным, если x является null (однако вы должны подумать дважды, действительно ли хотите принять null s, даже если тип cast будет успешным)

+3
источник

Нулевая проверка вообще не нужна для проверки перед instanceof. Если он равен нулю, то при проверке instanceof он вернет false.

Является ли плохой практикой проверять, имеет ли значение null значение instanceof?

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

0
источник

Я просто задаюсь вопросом, есть ли веская причина или практика использования! = Null вместо instanceof для проверки того, что что-то имеет значение null.

Разумеется, есть причина, что !=null может применяться ко всем объектам Java, но instanceof нельзя применять к примитивным типам, он проверяет, является ли данный объект экземпляром класса, поэтому мы используем !=null для проверьте недействительность.

Является ли плохой практикой проверять, имеет ли значение null значение instanceof?

Вы можете использовать его, но почему вы используете instanceof если это может вызвать проблемы с примитивными типами, и если !=null может применяться ко всем объектам.

РЕДАКТИРОВАТЬ:

В вашем случае использование if (view instanceof View) намного безопаснее, потому что вы используете его для проверки, является ли он экземпляром View и в то же время, если он не является null.

И как вы можете видеть в " Здесь ", вы можете увидеть, что вы можете использовать instanceof для проверки недействительности.

0
источник

instanceof используется для проверки того, является ли объект экземпляром определенного класса.

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


В своих фрагментах кода вы проверяете две разные вещи:

  • в первом вы проверяете, является ли ваш объект экземпляром класса View
  • во втором вы проверяете, инициализирован ли объект

Таким образом, это не два способа сделать то же самое...

Взгляните: использование "Экземпляра" в java

0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос