Java 10 – 局部變量類型推斷介紹

Java一直在努力減少語法的冗長性。首先是 Diamond運算符,現在是 var (局部變量類型– JEP 286 )以在Java中聲明變量。當您使用 var 聲明變量時,基本上,而不是聲明變量類型,它會根據設置的類型來假定其類型。例如

var str = "Hello world";

//or

String str = "Hello world";

在上面的示例中,在第一條語句中,您將 String 設置爲變量 str ,因此隱式假定其爲 String 類型。在上面的示例中,第一條語句基本上等同於第二條語句。

var 聲明和初始化

使用 var 時,必須在同一位置初始化變量。您不能將聲明和初始化放在不同的位置。如果未在適當位置初始化變量,則會出現編譯錯誤– 在沒有初始化程序的情況下不能對變量使用'var'

var i;	//Invalid Declaration - - Cannot use 'var' on variable without initializer
		
var j = 10; //Valid Declaration

System.out.println(i);

var不是關鍵字

雖然看起來很像,但 var 不是保留的Java關鍵字。因此,您可以創建名稱爲" var"的變量-允許使用。

var var = 10; 	//Valid Declaration
		
int var = 10; 	//Also valid Declaration

var 用法

使用 var 僅限於具有初始化程序的局部變量,增強的for循環中的索引以及在傳統的for循環中聲明的局部變量;它不適用於方法形式,構造函數形式,方法返回類型,字段,catch形式或任何其他類型的變量聲明。

允許使用爲 :

  • 帶有初始化程序的局部變量
  • 增強型for循環中的索引
  • 在傳統的for循環中聲明的本地
var blogName = "howtodoinjava.com";
		
for ( var object : dataList){
    System.out.println( object );
}

for ( var i = 0 ; i < dataList.size(); i++ ){
    System.out.println( dataList.get(i) );
}

用法不允許 :

  • 方法參數
  • 構造函數參數
  • 方法返回類型
  • 類字段
  • 捕獲形式(或任何其他類型的變量聲明)
public class Application {
	
	//var firstName;	//Not allowed as class fields
		
	//public Application(var param){ 	//Not allowed as parameter 
 
    //}

	/*try{
        
    } catch(var ex){	//Not allowed as catch formal 

    }*/

    /*public var demoMethod(){	//Not allowed in method return type
    	return null;
    }*/

    /*public Integer demoMethod2( var input ){	//Not allowed in method parameters
    	return null;
    }*/
}

var 不向後兼容

由於這是新的語言函數,使用 var 編寫的代碼不會在較低的JDK版本(小於10)中編譯。因此,只有在確定時才使用此函數。

var 不影響性能

請記住,在Java中,類型不是在運行時推斷的,而是在編譯時推斷的。這意味着結果字節碼與顯式類型聲明相同–它確實包含有關類型的信息。這意味着在運行時無需額外的處理。

 

鏈接:https://www.learnfk.com/article-java10-var-local-variable-type-inference
來源:Learnfk無涯私塾網

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章