日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java 7功能概述

發(fā)布時(shí)間:2023/12/3 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 7功能概述 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
前面我們討論了所有未納入Java 7的內(nèi)容,然后回顧了將其納入Java 7的有用的Fork / Join框架 。

今天的帖子將帶我們了解Project Coin的每個(gè)功能-一系列小的語言增強(qiáng)功能,這些功能雖然不是開創(chuàng)性的,但是對(duì)于任何能夠使用JDK 7的開發(fā)人員來說都是有用的。

我提出了一個(gè)銀行帳戶課程,該課程展示了Project Coin功能的基礎(chǔ)知識(shí)。

看一看…

public class ProjectCoinBanker {private static final Integer ONE_MILLION = 1_000_000;private static final String RICH_MSG = "You need more than $%,d to be considered rich.";public static void main(String[] args) throws Exception {System.out.println(String.format(RICH_MSG, ONE_MILLION));String requestType = args[0];String accountId = args[1];switch (requestType) {case "displayBalance":printBalance(accountId);break;case "lastActivityDate" :printLastActivityDate(accountId);break;case "amIRich" :amIRich(accountId);break;case "lastTransactions" :printLastTransactions(accountId, Integer.parseInt(args[2]));break;case "averageDailyBalance" :printAverageDailyBalance(accountId);break;default: break;}}private static void printAverageDailyBalance(String accountId) {String sql = String.format(AVERAGE_DAILY_BALANCE_QUERY, accountId);try (PreparedStatement s = _conn.prepareStatement(sql);ResultSet rs = s.executeQuery();) {while (rs.next()) {//print the average daily balance results}} catch (SQLException e) {// handle exception, but no need for finally to close resourcesfor (Throwable t : e.getSuppressed()) {System.out.println("Suppressed exception message is " + t.getMessage());}}}private static void printLastTransactions(String accountId, int numberOfTransactions) {List transactions = new ArrayList<>();//... handle fetching/printing transactions}private static void printBalance(String accountId) {try {BigDecimal balance = getBalance(accountId);//print balance} catch (AccountFrozenException | ComplianceViolationException | AccountClosedException e) {System.err.println("Please see your local branch for help with your account.");}}private static void amIRich(String accountId) {try {BigDecimal balance = getBalance(accountId);//find out if the account holder is rich} catch (AccountFrozenException | ComplianceViolationException | AccountClosedException e) {System.out.println("Please see your local branch for help with your account.");}}private static BigDecimal getBalance(String acccountId)throws AccountFrozenException, AccountClosedException, ComplianceViolationException {//... getBalance functionality}}

簡(jiǎn)要地說,我們的ProjectCoinBanker類演示了以下Project Coin功能的基本用法。

  • 數(shù)字文字下劃線
  • 開關(guān)中的弦
  • 多漁獲
  • 用于創(chuàng)建類型化對(duì)象的類型推斷
  • 嘗試使用資源和抑制的異常

首先,數(shù)字文字中的下劃線很容易解釋。 我們的例子

private static final Integer ONE_MILLION = 1_000_000;

表明好處是視覺的。 開發(fā)人員可以快速查看代碼以驗(yàn)證值是否符合預(yù)期。 下劃線可以在自然分組位置以外的其他地方使用,無論放置在何處。 數(shù)字文字中的下劃線不能以數(shù)字文字開頭或結(jié)尾,否則,您可以隨意將它們放在所需的位置。 盡管此處未進(jìn)行演示,但還添加了二進(jìn)制文字支持。 與十六進(jìn)制文字以0x或0X前綴相同的方式,二進(jìn)制文字將以0b或0B前綴。

開關(guān)中的字符串也是不言自明的。 現(xiàn)在,switch語句也接受String。 在我們的示例中,我們打開傳遞給main方法的String參數(shù)來確定發(fā)出了什么請(qǐng)求。 附帶說明,這純粹是一個(gè)編譯器實(shí)現(xiàn),帶有指示,可能會(huì)在以后添加JVM對(duì)String的支持。

類型推斷是另一個(gè)易于理解的改進(jìn)。 現(xiàn)在代替我們的舊代碼

List<Transaction> transactions = new ArrayList<Transaction>();

我們可以做

List<Transaction> transactions = new ArrayList<>();

因?yàn)榭梢酝茢囝愋汀?自從引入泛型以來,可能找不到任何人會(huì)辯稱不應(yīng)該這樣做,但是現(xiàn)在就在這里。

多次捕獲對(duì)于異常處理代碼的簡(jiǎn)潔性來說非常有用。 想要實(shí)際基于拋出的異常類型來做某事的次數(shù)太多了,直到現(xiàn)在,我們被迫擁有多個(gè)catch塊,它們基本上都在做同一件事。 新語法非常干凈和合乎邏輯。 我們的例子

catch (AccountFrozenException | ComplianceViolationException | AccountClosedException e)

顯示了如何輕松完成。

最后,Project Coin功能的最后一個(gè)演示是嘗試使用資源語法并支持檢索抑制的異常。 引入了一個(gè)新的接口AutoCloseable ,該接口已應(yīng)用于所有預(yù)期的可疑對(duì)象,包括Input / OutputStreams,讀取器/編寫器,通道,套接字,選擇器和java.sql資源Statement,ResultSet和Connection。 在我看來,語法不像多捕獲更改那樣自然,并不是說我有其他選擇。

try (PreparedStatement s = _conn.prepareStatement(sql);ResultSet rs = s.executeQuery();) {while (rs.next()) {//print the average daily balance results}} catch (SQLException e) {//handle exception, but no need for finally to close resourcesfor (Throwable t : e.getSuppressed()) {System.out.println("Suppressed exception message is " + t.getMessage());}}

首先,我們看到可以在嘗試使用資源時(shí)包含多個(gè)資源-非常好。 我們甚至可以在與PreparedStatement相同的塊中引用先前聲明的資源。 我們?nèi)匀豢梢蕴幚砦覀兊漠惓?#xff0c;但是我們不需要關(guān)閉finally塊來關(guān)閉資源。 還要注意, Throwable上有一個(gè)新方法getSuppressed() 。 這使我們可以訪問試圖“自動(dòng)關(guān)閉”聲明的資源時(shí)拋出的所有異常。 每個(gè)聲明的資源最多可以有一個(gè)抑制的異常。 注意:如果資源初始化引發(fā)異常,它將在聲明的catch塊中處理。

而已。 沒有什么破天荒的事情,但是我們可以不用太多麻煩就可以開始使用的一些簡(jiǎn)單增強(qiáng)功能。 Project Coin還包括有關(guān)varargs和編譯器警告的功能。 本質(zhì)上,它歸結(jié)為一個(gè)新的注釋(@SafeVarargs),可以在方法聲明中應(yīng)用該注釋,以允許開發(fā)人員從其使用的代碼中刪除@SuppressWarnings(“ varargs”)。 這已應(yīng)用于JDK中的所有關(guān)鍵可疑對(duì)象,但是在任何通用varags方法中都可以使用相同的注釋。

在線描述的項(xiàng)目代幣功能集充其量是不一致的。 希望這會(huì)給您關(guān)于JDK 7提案中可以使用的內(nèi)容的完整摘要。

參考: JCG合作伙伴的 Java 7 –項(xiàng)目硬幣功能概述 在Carfey Software Blog上 。

相關(guān)文章 :
  • Java 7:嘗試資源
  • 具有Java 7中自動(dòng)資源管理功能的GC
  • 速覽Java 7 MethodHandle及其用法
  • 在Java 7中處理文件
  • Java SE 7、8、9 –推進(jìn)Java
  • Java教程和Android教程列表

翻譯自: https://www.javacodegeeks.com/2011/11/java-7-feature-overview.html

總結(jié)

以上是生活随笔為你收集整理的Java 7功能概述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。