Может ли ссылка на интерфейс = null? - PullRequest
2 голосов
/ 12 декабря 2011

Я читаю этот код в книге только сейчас.

public class AdapterWrapper implements ListAdapter {
  ListAdapter delegate=null;

  // other code

}

ListAdapter является общедоступным интерфейсом, и ссылка на этот интерфейс была сделана и ей присвоено значение null. Это действительно? Я действительно смущен этим.

Ответы [ 3 ]

4 голосов
/ 12 декабря 2011

Да, это действительно.Это просто означает, что delegate является ссылкой на интерфейс ListAdapter, и в данный момент он указывает на null.

. Позже вы можете указать любой класс , реализующий ListAdapter.интерфейс, такой как SimpleCursorAdapter, WrapperListAdapter или любая другая реализация, которую вы хотите.

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

2 голосов
/ 12 декабря 2011

Просто цитируя Википедию на Интерфейс (Java) здесь:

Можно указать, что ссылки на объекты в Java относятся к типу интерфейса; в этом случае они должны быть либо нулевыми, либо связаны с объектом, который реализует интерфейс.

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

2 голосов
/ 12 декабря 2011

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

Значение любой переменной ссылочного типа является либо ссылкой на экземпляр какого-либо совместимого типа, либо нулевым - это одинаково как для классов, так и для интерфейсов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...