【发布时间】:2011-01-22 02:04:48
【问题描述】:
我不清楚 Java 中的 java.lang.Void 类。谁能举个例子详细说明一下。
【问题讨论】:
我不清楚 Java 中的 java.lang.Void 类。谁能举个例子详细说明一下。
【问题讨论】:
它还包含Void.TYPE,用于使用反射测试返回类型:
public void foo() {}
...
if (getClass().getMethod("foo").getReturnType() == Void.TYPE) ...
【讨论】:
void.class。对不起。
void.class 是否存在于 Java 1.1 中?
假设你想要一个为某事返回 void 的泛型:
abstract class Foo<T>
{
abstract T bar();
}
class Bar
extends Foo<Void>
{
Void bar()
{
return (null);
}
}
【讨论】:
This method must return a result of type Void 时被难住了。没想到只是返回(null)。
实际上有一个实用案例 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;
我已经使用它创建了一个自定义序列化器,将类转换为专有格式。
【讨论】:
来自Java docs:
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 对象。
【讨论】: