在API中
"Void类是一个不可实例化的占位符类,用于保存对表示Java关键字void的Class对象的引用."
java.lang.Void使用?如果该类是"不可实现的",它有什么用?java.lang.Void和之间有什么区别void?Quu*_*one 97
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在我的用处并没有任何用处.有些功能不具有非晦涩的用途.没关系.
Jav*_*ier 54
最常见的用途Void是用于反射,但这不是唯一可以使用它的地方.
void 是一个关键字,表示函数不会产生值.
java.lang.Void 是一个引用类型,然后以下是有效的:
Void nil = null;
Run Code Online (Sandbox Code Playgroud)
(到目前为止它并不有趣......)
作为结果类型(具有类型的返回值Void的函数),这意味着函数*总是*返回null(它不能返回除了之外的任何内容null,因为Void没有实例).
Void function(int a, int b) {
//do something
return null;
}
Run Code Online (Sandbox Code Playgroud)
为什么我喜欢一个总是返回null 的函数?
在发明泛型之前,我没有用例Void.
有了泛型,有一些有趣的案例.例如,a Future<T>是由另一个线程执行的异步操作的结果的持有者.Future.get将返回操作值(类型T),并将阻塞直到执行计算.
但是......如果没有任何回报怎么办?简单:用一个Future<Void>.例如,在Google App Engine中,Asyncronous Datastore Service delete操作. When会在删除完成后返回将来的get()is invoked on that future,null` .人们可以用Callable s 写一个类似的例子.
另一个用例是Map没有值,即a Map<T,Void>.这样的映射表现得像a Set<T>,那么当没有等效的实现时Set(例如,没有WeakHashSet,那么可以使用a WeakHashMap<T,Void>)它可能是有用的.
Lou*_*man 52
在唯一的一点的Void是持有Void.TYPE,这是有点像void.class.如果你有一个返回的方法的反射引用void,并且你得到它的返回类型,它将返回Void.TYPE.
你不能也不应该将它用于其他任何事情.
Void是一个AutoBoxing功能(自JDK 1.5起)的void.
它的自我解释是Void是参考,而void是原始类型.
那么,要求必须使用Void ???
Generic类型的一个常见用法,我们不能使用原语.
比方说,
AsyncTaks<Params, Progress, Result>如果我不想获得Progress更新,那么Android会怎样.我不能在这里使用void(原始类型)我们需要java.lang.Void