Форма <Void>в калитке (или использование типа Void в целом) - PullRequest
2 голосов
/ 03 июля 2011

Недавно встречался с кодом в Wicket, например:

Form<?> form = new Form<Void>("form")

Может кто-нибудь объяснить использование здесь типа Void?Впервые я увидел, что этот тип используется на самом деле.Используется ли все это за пределами калитки?

Ответы [ 2 ]

6 голосов
/ 03 июля 2011

Да, он используется за пределами калитки. Например, когда метод принимает Callable<V> в качестве аргумента, и мой Callable ничего не возвращает, я использую Callable<Void>. Void, таким образом, используется, чтобы указать, что какой-то параметризованный метод ничего не возвращает.

В данном конкретном случае, согласно документации, он используется для указания того, что форма не имеет какого-либо объекта модели. Единственное допустимое значение типа Void - null.

2 голосов
/ 05 июля 2011

Void иногда используется в качестве параметра типа в случаях, когда вы хотите выразить, что вы «не хотите ничего возвращать» или «не хотите ничего передавать» в типе. то есть тип устройства , который не содержит никакой информации. Поскольку параметр типа должен быть ссылочным типом, а null - это значение всех ссылочных типов, требуемый тип не будет иметь никаких других значений, т.е. это тип без экземпляров. Сам "нулевой тип" будет работать, но у него нет имени. Поэтому мы выбираем произвольный класс, у которого нет экземпляров, и Void - удобный выбор. Технически любой другой неинстанцируемый класс, такой как служебные классы Math или Collections, будет работать так же хорошо; но Void кажется более подходящим из-за его отношения к void, типу, который используется для выражения типа модуля в примитивных типах.

...