Подтвердить что ты не робот

Какая потребность в классе Void в Java

Я не понимаю, с классом java.lang.Void в Java. Может ли кто-нибудь объяснить это с помощью примера.

4b9b3361

Ответ 1

Он также содержит Void.TYPE, полезный для тестирования возвращаемого типа с отражением:

public void foo() {}
...
if (getClass().getMethod("foo").getReturnType() == Void.TYPE) ...

Ответ 2

Предположим, что вы хотите иметь общий тип, который возвращает void для чего-то:

abstract class Foo<T>
{
    abstract T bar();
}

class Bar
    extends Foo<Void>
{
    Void bar()
    {
        return (null);
    }
}

Ответ 3

На самом деле существует прагматичный случай, когда void.class действительно полезен. Предположим, вам нужно создать аннотацию для полей класса, и вам нужно определить класс поля, чтобы получить некоторую информацию об этом (например, если поле является перечислением, чтобы получить список потенциальных значений). В этом случае вам понадобится что-то вроде этого:

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface PropertyResourceMapper
{
    public Class acceptedValues() default void.class;
}

для использования следующим образом:

@PropertyResourceMapper(acceptedValues = ImageFormat.class, description = "The format of     the image (en example, jpg).")
private ImageFormat format;

Я использовал это для создания пользовательского сериализатора классов в проприетарном формате.

Ответ 4

Из Java docs:

public final class Void
extends Object

Класс Void является неинтересным классом-заполнителем для ссылки на объект класса, представляющий ключевое слово void.

static Class<Void> TYPE 

Объект класса, представляющий примитивный Java-тип void.

TYPE
public static final Class<Void> TYPE

Объект класса, представляющий примитивный Java-тип void.