void不是函數,是方法的修飾符,void的意思是該方法沒有返回值,意思就是方法只會運行方法中的語句,但是不返回任何東西。
java.lang.Void是一種類型。例如給Void引用賦值null。
1
|
Void nil = null ; |
通過Void類的代碼可以看到,Void類型不可以繼承與實例化。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
public final class Void { /** * The {@code Class} object representing the pseudo-type corresponding to * the keyword {@code void}. */ @SuppressWarnings ( "unchecked" ) public static final Class<Void> TYPE = (Class<Void>) Class.getPrimitiveClass( "void" ); /* * The Void class cannot be instantiated. */ private Void() {} } |
Void作為函數的返回結果表示函數返回null(除了null不能返回其它類型)。
1
2
3
4
|
Void function( int a, int b) { //do something return null ; } |
在泛型出現之前,Void一般用于反射之中。例如,下面的代碼打印返回類型為void的方法名。
1
2
3
4
5
6
7
8
9
10
|
public class Test { public void print(String v) {} public static void main(String args[]){ for (Method method : Test. class .getMethods()) { if (method.getReturnType().equals(Void.TYPE)) { System.out.println(method.getName()); } } } } |
泛型出現后,某些場景下會用到Void類型。例如Future<T>用來保存結果。Future的get方法會返回結果(類型為T)。
但如果操作并沒有返回值呢?這種情況下就可以用Future<Void>表示。當調用get后結果計算完畢則返回后將會返回null。
另外Void也用于無值的Map中,例如Map<T,Void>這樣map將具Set<T>有一樣的功能。
因此當你使用泛型時函數并不需要返回結果或某個對象不需要值時候這是可以使用java.lang.Void類型表示。
參考:
java.lava.Void與void的比較 ,
http://stackoverflow.com/questions/10839042/what-is-the-difference-between-java-lang-void-and-void
如何判斷函數返回void,
http://stackoverflow.com/questions/1924253/how-to-determine-by-reflection-if-a-method-returns-void
總結
以上就是本文關于java.lang.Void 與 void的比較及使用方法介紹的全部內容,如果您想了解更多關于 java.lang.Void的內容,這里有一篇《java.lang.Void類源碼解析》是非常合適的,希望對您有所幫助。有什么問題可以隨時留言,大家一起交流討論。
原文鏈接:http://blog.csdn.net/Revivedsun/article/details/71076463