java.lang.void 和 void 有什么区别?
在 API 中
“Void 类是一个无法证实的占位符类,用于保存对表示 Java 关键字 void 的 Class 对象的引用。
- 什么是“不可证实”占位符类?何时使用?如果类是“不可证实的”,它有什么用?
java.lang.Void
- 和 有什么区别?
java.lang.Void
void
在 API 中
“Void 类是一个无法证实的占位符类,用于保存对表示 Java 关键字 void 的 Class 对象的引用。
java.lang.Void
java.lang.Void
void
java.lang.Void
类似于 java.lang.Integer
。 是框定基元类型值的一种方式。 是框定基元类型值的一种方式。Integer
int
Void
void
“但是等等,没有任何可能的值!”void
右!这就是“无法证实”的原因。:)java.lang.Void
Java类型系统的一个很好的功能是每个基元类型都有一个盒装的等价物。 有 , 有 , 有 ...并具有 .如果不存在,那将是奇怪和不对称的。int
Integer
long
Long
byte
Byte
void
Void
Void
“那么 和 有什么区别呢?”java.lang.Void
void
容易。 是基元类型。 是继承自 的引用类型。它们的相似之处在于它们都没有任何可能的值;但尽管如此,从类型系统的角度来看,它们是两种截然不同的类型。void
Void
Object
“但我在我的程序中没有任何用处。Void
而且我对我没有任何用处。某些功能没有非模糊的用途。没关系。GarbageCollectorMXBean
Void
最常见的用途是用于反射,但这不是唯一可以使用它的地方。
void
是一个关键字,表示函数不生成值。
java.lang.Void
是引用类型,则以下内容有效:
Void nil = null;
(到目前为止,这并不有趣...)
作为结果类型(返回值为 type 的函数),它意味着函数 *always * 返回(它不能返回 除 以外的任何内容,因为没有实例)。Void
null
null
Void
Void function(int a, int b) {
//do something
return null;
}
为什么我想要一个总是返回 null 的函数?
在泛型发明之前,我没有.Void
对于泛型,有一些有趣的情况。例如,Future<T>
是另一个线程执行的异步操作的结果的持有者。 将返回操作值(类型),并将阻塞,直到执行计算。Future.get
T
但。。。如果没有什么可返回的怎么办?简单:使用 .例如,在 Google App Engine 中,异步数据存储服务删除
操作会在删除完成后返回 futureget()null'。可以用 Callables 写一个类似的例子。Future<Void>
. When
is invoked on that future,
另一个用例是 无值,即 .这样的映射表现得像一个,那么当没有等效的实现时,它可能是有用的(例如,没有,那么可以使用WeakHashMap<T,Void>
)。Map
Map<T,Void>
Set<T>
Set
WeakHashSet