java 11_JAVA 11初体验
JAVA 11初體驗(yàn)
隨著JAVA沒半年發(fā)布一次新版本,前幾天JAVA 11隆重登場(chǎng)。在JAVA 11中,增加了一些新的特性和api, 同時(shí)也刪除了一些特性和api,還有一些性能和垃圾回收的改進(jìn)。
作為一名一線的開發(fā)人員,JAVA 11給我們帶來(lái)哪些便利之處呢?下面我們來(lái)體驗(yàn)一下。
一、在Lambda表達(dá)式中使用var
本地變量類型var是java 10提出的新概念,它可以從上下文中推斷出本地變量的類型,從而提高代碼可讀性。 我們看看下面的例子:
public class Main {
public static void main(String[] args) throws Exception {
URL url = new URL("http://www.oracle.com/");
URLConnection conn = url.openConnection();
Reader reader = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
}
}
使用var聲明后,上面的代碼可以改寫成:
public class Main {
public static void main(String[] args) throws Exception {
var url = new URL("http://www.oracle.com/");
var conn = url.openConnection();
var reader = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
}
}
我們使用var代替了URL、URLConnection、Reader,提高了代碼的可讀性,也方便了開發(fā)。 但是在JAVA 10中,var變量不能在lambda表達(dá)式中聲明,在JAVA 11中,解決了這個(gè)問(wèn)題。 我們可以在lambda表達(dá)式中使用var,如下:
(var x, var y) -> x.process(y)
上面的例子等同于
(x, y) -> x.process(y)
但是我們不能混合使用,下面的兩個(gè)例子都是錯(cuò)誤的:
//含蓄型的lambda表達(dá)式中,要么全使用var,要么全不使用var
(var x, y) -> x.process(y)
//在lambda表達(dá)式中,不能即使用含蓄型,又使用明確型
(var x, int y) -> x.process(y)
二、標(biāo)準(zhǔn)化HTTP Client API
以前我們?cè)诔绦蛑惺褂肏ttpClient時(shí),通常會(huì)引入apache的HttpClient工具包。在JAVA 11中,我們可以使用JDK原生的 HttpClient了。
public class HttpTest {
public static void main(String[] args) throws Exception {
String uri = "http://www.baidu.com";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(uri))
.build();
HttpResponse response =
client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
上面的例子是同步的get請(qǐng)求,還有其他的方法HttpClient也是提供的,例如:
異步get
post提交
并發(fā)請(qǐng)求
Get Json
Post Json
這些例子這里不做詳細(xì)介紹了,如有需要請(qǐng)參考官方例子。 功能很強(qiáng)大吧,我們不用再引入其他的HttpClient的jar包了。
三、總結(jié)
對(duì)于一線開發(fā)者而言,JAVA 11的體驗(yàn)就這么多,如有遺漏,會(huì)在以后補(bǔ)充。
總結(jié)
以上是生活随笔為你收集整理的java 11_JAVA 11初体验的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java网络编程从入门到精通(5):使用
- 下一篇: WF4.0:NativeActivity