62

我不清楚java.lang.VoidJava中的类。任何人都可以举例说明这一点。

4

4 回答 4

62

它还包含Void.TYPE,对于使用反射测试返回类型很有用:

public void foo() {}
...
if (getClass().getMethod("foo").getReturnType() == Void.TYPE) ...
于 2010-02-28T20:07:48.657 回答
51

假设你想要一个泛型返回 void 的东西:

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

class Bar
    extends Foo<Void>
{
    Void bar()
    {
        return (null);
    }
}
于 2010-02-28T20:04:56.687 回答
1

实际上,有一个实用案例 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;

我用它来创建一个自定义的类序列化器到一个专有格式。

于 2014-07-31T18:44:30.803 回答
-2

来自Java 文档

public final class Void
extends Object

Void 类是一个不可实例化的占位符类,用于保存对表示 Java 关键字 void 的 Class 对象的引用。

static Class<Void> TYPE 

表示原始 Java 类型 void 的 Class 对象。

TYPE
public static final Class<Void> TYPE

表示原始 Java 类型 void 的 Class 对象。

于 2010-08-14T20:44:13.710 回答