问题

有一个JavaVoid--大写V - reference type。我见过它唯一的情况是参数化Callables

final Callable<Void> callable = new Callable<Void>() {
            public Void call() {
                foobar();
                return null;
            }
        };

JavaVoid参考类型还有其他用途吗?是否可以分配除null以外的任何其他内容?如果是的话,你有例子吗?


#1 热门回答(108 赞)

Void已成为你不感兴趣的泛型参数的约定。没有理由要使用任何其他非实例化类型,例如System

它也常用于例如Map值(尽管Collections.newSetFromMapBooleanas映射不必接受null值)和java.security.PrivilegedAction

几年前我写了aweblog entryonVoida。


#2 热门回答(43 赞)

你可以使用反射创建Void实例,但它们对任何事物都没有用。 Void是一种表示泛型方法不返回任何内容的方法。

Constructor<Void> constructor = Void.class.getDeclaredConstructor();
constructor.setAccessible(true);
Void v = constructor.newInstance();
System.out.println("I have a " + v);

打印像

I have a java.lang.Void@75636731

#3 热门回答(26 赞)

Future<Void>像魅力一样。 :)


原文链接