использование «экземпляра» в java

Для чего используется оператор «instanceof»?

Я узнал, что Java имеет оператор instanceof . Можете ли вы уточнить, где он используется и каковы его преимущества?

В основном, вы проверяете, является ли объект экземпляром определенного classа. Обычно вы используете его, когда у вас есть ссылка или параметр для объекта, который имеет тип суперclassа или интерфейса, и ему нужно знать, имеет ли фактический объект какой-либо другой тип (обычно более конкретный).

Пример:

 public void doSomething(Number param) { if( param instanceof Double) { System.out.println("param is a Double"); } else if( param instanceof Integer) { System.out.println("param is an Integer"); } if( param instanceof Comparable) { //subclasses of Number like Double etc. implement Comparable //other subclasses might not -> you could pass Number instances that don't implement that interface System.out.println("param is comparable"); } } 

Обратите внимание: если вам приходится часто использовать этот оператор, обычно это намек на то, что ваш дизайн имеет некоторые недостатки. Поэтому в хорошо спроектированном приложении вам следует как можно меньше использовать этого оператора (конечно, есть исключения из этого общего правила).

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

Подробнее читайте здесь из определения языка Oracle.

instanceof может использоваться для определения фактического типа объекта:

 class A { } class C extends A { } class D extends A { } public static void testInstance(){ A c = new C(); A d = new D(); Assert.assertTrue(c instanceof A && d instanceof A); Assert.assertTrue(c instanceof C && d instanceof D); Assert.assertFalse(c instanceof D); Assert.assertFalse(d instanceof C); } 

instanceof – это ключевое слово, которое может использоваться для проверки того, имеет ли объект определенный тип.

Пример :

 public class MainClass { public static void main(String[] a) { String s = "Hello"; int i = 0; String g; if (s instanceof java.lang.String) { // This is going to be printed System.out.println("s is a String"); } if (i instanceof Integer) { // This is going to be printed as autoboxing will happen (int -> Integer) System.out.println("i is an Integer"); } if (g instanceof java.lang.String) { // This case is not going to happen because g is not initialized and // therefore is null and instanceof returns false for null. System.out.println("g is a String"); } } 

Вот мой источник .

  • Понимание использования Spring @Autowired
  • Простой экспорт и импорт базы данных SQLite на Android
  • Каковы все различные способы создания объекта в Java?
  • Переопределение Object.equals VS Перегрузка
  • Ошибка сборки тестов для Android: несколько файлов dex определяют Landroid / support / test / BuildConfig
  • Отправка строки через Bluetooth с ПК в качестве клиента на мобильный как сервер
  • Runtime.exec (): перезагрузка в Android?
  • ANDROID: Как получить root-доступ в приложении для Android?
  • Есть ли на установке событие в android?
  • тип возврата main в java
  • источник отладки jdk не может просматривать переменную, что она
  • Давайте будем гением компьютера.