Java中需要Void类吗

发布于 2024-08-22 21:55:42 字数 65 浏览 6 评论 0原文

我不清楚Java中的类java.lang.Void。任何人都可以用一个例子详细说明这一点。

I am not clear with the class java.lang.Void in Java. Can anybody elaborate in this with an example.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

眸中客 2024-08-29 21:55:42

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

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

It also contains Void.TYPE, useful for testing return type with reflection:

public void foo() {}
...
if (getClass().getMethod("foo").getReturnType() == Void.TYPE) ...
过度放纵 2024-08-29 21:55:42

假设您想要一个对某些内容返回 void 的泛型:

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

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

Say you want to have a generic that returns void for something:

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

class Bar
    extends Foo<Void>
{
    Void bar()
    {
        return (null);
    }
}
请远离我 2024-08-29 21:55:42

实际上,在一个实用的例子中,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;

我已经使用它来创建专有格式的类的自定义序列化器。

Actually there is a pragmatic case where void.class is really useful.
Suppose you need to create an annotation for class fields, and you need to define the class of the field to get some information about it (in example, if the field is an enum, to get list of potential values). In that case, you would need something like this:

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

to be used like this:

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

I have used this to create a custom serializer of classes to a proprietary format.

み格子的夏天 2024-08-29 21:55:42

来自 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 对象。

From the Java docs:

public final class Void
extends Object

The Void class is an uninstantiable placeholder class to hold a reference to the Class object representing the Java keyword void.

static Class<Void> TYPE 

The Class object representing the primitive Java type void.

TYPE
public static final Class<Void> TYPE

The Class object representing the primitive Java type void.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文