Java中对Void类的需求是什么
我不清楚java中的类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.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。