Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中对Void类的需求是什么_Java_Void - Fatal编程技术网

Java中对Void类的需求是什么

Java中对Void类的需求是什么,java,void,Java,Void,我不清楚java中的类java.lang.Void。任何人都可以用一个例子对此进行详细说明。假设您想要一个泛型,它返回void for something: abstract class Foo<T> { abstract T bar(); } class Bar extends Foo<Void> { Void bar() { return (null); } } 抽象类Foo { 抽象T-bar(); } 分

我不清楚java中的类
java.lang.Void
。任何人都可以用一个例子对此进行详细说明。

假设您想要一个泛型,它返回void for something:

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

class Bar
    extends Foo<Void>
{
    Void bar()
    {
        return (null);
    }
}
抽象类Foo
{
抽象T-bar();
}
分类栏
阿福
{
空条()
{
返回(空);
}
}

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

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

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

static Class<Void> TYPE 
静态类类型
表示基本Java类型void的类对象

TYPE
public static final Class<Void> TYPE
类型
公共静态最终类类型

表示基本Java类型void的类对象

实际上,void.class确实很有用。
TYPE
public static final Class<Void> TYPE
假设需要为类字段创建注释,并且需要定义字段的类以获取有关它的一些信息(例如,如果字段是枚举,则需要获取潜在值的列表)。在这种情况下,您将需要以下内容:

@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;
要像这样使用:

@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;

我用它创建了一个自定义的私有格式的类序列化程序。

+1用于指出它在反射中用于指定没有返回值的方法的类型。实际上还有void.class(小写!),它在您的示例中也能很好地工作。实际上,Void.TYPE被定义为公共静态最终类TYPE=Class.getPrimitiveClass(“Void”);它本身就是void.class。@Willi:是的,我忘记了
void.class
。对不起,
void.class
是否存在于Java 1.1中?问题是自jdk 1.1以来就存在void类。我喜欢TofuBeer的回答,但Roman在那里提出了一个有趣的观点。它并不是严格地存在于Java 1.1中的,它只是第一次出现在我的脑海中。反射的答案是为什么引入它。有这个用例,当javac编写
时被难住了。这个方法必须返回Void类型的结果。只是返回
(null)
并没有出现在我的脑海中。这只是文档的复制+粘贴,不是真正的答案。@Hugo这是真的,但我仍然发现这是最有用的答案。其他答案回避了它存在的原因。它是基元类型的类表示。例如整数或双精度。您还应该提到,唯一驻留在Void中的术语是null。