java概述_Java 7功能概述

java概述

前面我们讨论了所有未纳入Java 7的内容,然后回顾了将其纳入Java的有用的Fork / Join框架 。

今天的帖子将带我们了解Project Coin的每个功能-一系列小的语言增强功能,这些功能虽然不是开创性的,但是对于任何能够使用JDK 7的开发人员来说都是有用的。

我提出了一个银行帐户课程,该课程展示了Project Coin功能的基础知识。

看一看…

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}}

简而言之,我们的ProjectCoinBanker类演示了以下Project Coin功能的基本用法。

  • 数字文字下划线
  • 开关中的弦
  • 多渔获
  • 用于创建类型化对象的类型推断
  • 尝试使用资源和抑制的异常

首先,数字文字中的下划线非常容易解释。 我们的例子

private static final Integer ONE_MILLION = 1_000_000;

表明好处是视觉的。 开发人员可以快速查看代码以验证值是否符合预期。 下划线可用于自然分组位置以外的其他位置,无论放置在何处。 数字文字中的下划线不能以数字文字开头或结尾,否则,您可以随意将它们放在所需的位置。 虽然此处未进行演示,但还添加了二进制文字支持。 与十六进制文字以0x或0X前缀相同的方式,二进制文字将以0b或0B前缀。

switch中的字符串也是不言自明的。 现在,switch语句也接受String。 在我们的示例中,我们打开传递给main方法的String参数来确定发出了什么请求。 附带说明,这纯粹是一个编译器实现,表示可能会在以后添加JVM对String的支持。

类型推断是另一个易于理解的改进。 现在代替我们的旧代码

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

我们可以做

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

因为可以推断类型。 自从引入泛型以来,可能找不到任何人会辩称不应该这样,但现在就在这里。

多次捕获对于异常处理代码的简洁性来说非常有用。 想要实际基于抛出的异常类型做某事的次数太多了,直到现在,我们被迫拥有多个catch块,它们基本上都在做同一件事。 新语法非常干净和合乎逻辑。 我们的例子

catch (AccountFrozenException | ComplianceViolationException | AccountClosedException e)

显示了如何轻松完成。

最后,项目硬币功能的最后演示是尝试使用资源语法并支持检索抑制的异常。 引入了一个新的接口AutoCloseable ,该接口已应用于所有预期的可疑对象,包括输入/​​输出流,读取器/写入器,通道,套接字,选择器和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());}}

首先,我们看到可以在尝试使用资源时包含多个资源-非常好。 我们甚至可以在与PreparedStatement相同的块中引用先前声明的资源。 我们仍然可以处理我们的异常,但是我们不需要关闭finally块来关闭资源。 还要注意, Throwable上有一个新方法getSuppressed() 。 这使我们可以访问试图“自动关闭”声明的资源时抛出的任何异常。 每个声明的资源最多可以有一个抑制的异常。 注意:如果资源初始化引发异常,它将在您声明的catch块中处理。

而已。 没有什么破天荒的事情,但是我们可以不用太多麻烦就可以开始使用的一些简单增强功能。 Project Coin还包括有关varargs和编译器警告的功能。 本质上,它归结为一个新的注释(@SafeVarargs),可以在方法声明中应用该注释,以允许开发人员从其使用的代码中删除@SuppressWarnings(“ varargs”)。 这已应用于JDK中的所有关键可疑对象,但是在任何通用varags方法中都可以使用相同的注释。

在线描述的项目代币功能集充其量是不一致的。 希望这会为您提供有关JDK 7提案中可以使用的内容的完整摘要。

参考: JCG合作伙伴提供的 Java 7 –项目硬币功能概述 在Carfey Software Blog上 。

相关文章 :
  • Java 7:尝试资源
  • 具有Java 7中自动资源管理功能的GC
  • 概览Java 7 MethodHandle及其用法
  • 在Java 7中处理文件
  • Java SE 7、8、9 –推动Java前进
  • Java教程和Android教程列表

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

java概述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/357832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java实现即时通讯软件

导读:即时通讯软件即所谓的聊天工具,其主要用途是用于文字信息的传递与文件传输。使用eclipse作为即时通讯软件的开发工具,使用Socket建立通讯渠道,多线程实现多台计算机同时进行信息的传递,swing技术等进行实际开发相对比较合适。通过一些轻松的注册登录后,在局域网中即…

两种类型的Spark RDD task解析以及iterator解析 -- (视频笔记)

spark 每次提交一个作业&#xff0c;都会划分成不同的stage&#xff0c;除了最后一个stage&#xff08;shuffle map task&#xff09;&#xff0c;前边的stage属于一种类型&#xff08;result task&#xff09;。 spark中的job&#xff0c;内部是由具体task构成&#xff0c;由于…

JBoss BRMS复杂事件处理(CEP)性能基准

技术来了又去&#xff0c;但是一件事保持不变。 在设计企业解决方案时&#xff0c;我们喜欢使我们的生活更轻松的复杂组件&#xff0c;并且作为建筑师和开发人员&#xff0c;我们一直在寻找使我们的生活更轻松的方法。 一种方法是跟上与感兴趣的技术有关的流行新站点。 另一种…

python 函数递归一次增加一次变量_python函数局部变量、全局变量、递归知识点总结...

函数局部变量 全局变量 及其作用域 #简单类型(int str等)变量的局部变量与全局变量及其作用域的关系name "xxx" #第一级顶头定义的变量都称为全局变量&#xff0c;其作用域从变量定义的位置开始到此程序结束def Print_Name():print("name before change:"…

java实现出租车计价器

导读: 在我国,出租车行业是八十年代初兴起的一项新兴行业,随着出租车的产生,计价器也就应运而生。但当时在全国没有一家企业能够生产,因而那个时期的计价器是由台湾引进。台湾是计价器的主要生产场地,目前全世界的计价器中有90%为台湾生产。现今我国生产计价器的企业有上…

映像劫持技术(2):实例

在Image File Execution Options下创建cmd.exe项&#xff0c;将其“重定向”到我们自己编写的程序 1 #include<stdio.h>2 #include<windows.h>3 4 int main()5 {6 HKEY hKey;7 DWORD dwDispositionREG_CREATED_NEW_KEY; //新建一个子项8 if((::RegCre…

Hey,孙叫兽的2020 CSDN年度报告已出炉,请查收!

导读&#xff1a;最近经常看到朋友圈有人分享自己2020年在常用平台的年度报告&#xff1a; 有的人分享了这一年来听了多少首歌&#xff0c;最喜爱听的歌是什么&#xff1b; 有的人分享了这一年来消费了多少钱&#xff0c;最喜欢购买的产品类型是什么&#xff1b; 有的人分享了这…

mysql的表创建_MYSQL表创建

Customer属性&#xff1a;ID 字符型 最大10个字符 ——顾客编号NAME 字符型 最大16个字符 ——顾客姓名SEX 字符型 最大2个字符 ——性别MOBILE 字符型 最大11个字符 ——移动电话ADDRESS 字符型 最大50个字符 ——家庭住址约束&#xff1a; ID…

使用Swagger轻松记录您的Play Framework REST API

该帖子最初在http&#xff1a;// swag ger.io&#xff08;7/30/2015&#xff09;上发布 我一直在将Play Framework用作几个项目的基于Java的&#xff0c;快速的REST后端框架。 后来&#xff0c;我很高兴找到Swagger&#xff0c;并努力将其集成到几个项目中。 在我第一次挣扎时…

Java实现qq截图工具

导读:当今时代是飞速发展的信息时代,人们在对信息的处理中对图像的处理量与日俱增,这一点在文档人员上显得非常突出。 本软件采用Java语言进行模拟qq截图功能,获取屏幕方式灵活,可以获取指定的屏幕,并且可以对获取到的截图进行存储,编辑(添加文字)等操作,对这些操作设置了…

mysql查看导入大小_mysql 数据导入、导出,及库大小查看

一、导出数据库用mysqldump命令(注意mysql的安装路径&#xff0c;即此命令的路径)&#xff1a;1、导出数据和表结构&#xff1a;mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql#/usr/local/mysql/bin/ mysqldump -uroot -p abc > abc.sql敲回车后会提示输入密码2、…

java实现儿时的超级玛丽游戏

导读:近年来,Java作为一种新的编程语言,以其简单性、可移植性和平台无关性等优点,得到了广泛地应用。J2SE称为Java标准版或Java标准平台。J2SE提供了标准的SDK开发平台。利用该平台可以开发Java桌面应用程序和低端的服务器应用程序,也可以开发Java Applet程序。 “超级玛丽…

MongoDB实战指南(二):索引与查询优化

数据库保存记录的机制是建立在文件系统上的&#xff0c;索引也是以文件的形式存储在磁盘上&#xff0c;在数据库中用到最多的索引结构就是B树。尽管索引在数据库领域是不可缺少的&#xff0c;但是对一个表建立过多的索引会带来一些问题&#xff0c;索引的建立要花费系统时间&am…

mysql学生选课系统的关系模型_使用PowerDesigner搭建学生选课管理系统(学生老师管理员一体系结构)由基础设计至数据库生成(SQL语句源代码的生成)全过程实例操作...

思考构图大小及范围首先&#xff0c;我们大致的写出要建的几张表&#xff0c;并自定义其Code(所谓Code其实就是自定义一个字段名&#xff0c;因为SQL语句不能由中文)我们可以将不同的表按照不同的类型分开&#xff0c;这样一个类型的表可以一起建并且相互之间的关系不会弄混制作…

java实现飞机大战游戏

导读:现如今,随着智能手机的兴起与普及,加上5G(the 5th Generation mobile communication ,第5代移动通信技术)网络的深入,越来越多的IT行业开始向手机行业转移重心。而手机行业中游戏方面的利润所占比重较大,并且手机游戏大多数则是由Java语言开发研制的。所以我想顺应…

merge语句使用_使用SQL:2003 MERGE语句的奥术魔术

merge语句使用时不时地&#xff0c;由于以下任何原因&#xff0c;我们不得不将INSERT与UPDATE区分开来感到尴尬&#xff1a; 我们必须至少发表两个声明 我们必须考虑性能 我们必须考虑比赛条件 我们必须在[UPDATE; 如果UPDATE_COUNT 0 THEN INSERT]和[INSERT; 如果例外然后…

UVA 10917 Walk Through the Forest

最短路DP Walk Through the ForestTime Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu[Submit] [Go Back] [Status] Description Problem C: A Walk Through the Forest Jimmy experiences a lot of stress at work these days, especially sin…

python定义区间[-5、5_有一个数 x 在区间 [-5,0] 内 , 写出其条件表达式 。 (5.0分)_学小易找答案...

【其它】2018应心ABC反应时任务实验数据.sav 请利用上面的实验数据文档,完成本次实验的报告撰写,并上传。 【单选题】“ab”+”c”*2 结果是: (3.0分) 【判断题】元组可以作为集合的元素。 (2.0分) 【判断题】函数中必须包含return语句。 (3.5分) 【判断题】加法运算符可以用来…

java实现愤怒的小鸟游戏

导读:Java语言是一门面向对象的编程语言,它不但汲取了C++语言的各种精髓,而且还抛弃了C++语言里晦涩难懂的多继承和指针等概念,所以Java语言具有的特征便是:功能超强和易用实用。 Jbox2D中不仅集成了大量物理运动学和机械运动学计算,而且也将物理仿真包集成到

为什么应始终将连接池与Oracle XE一起使用

介绍 Oracle Express Edition是Oracle Enterprise Edition的免费版本&#xff0c;其较小的尺寸使其非常方便地测试各种Oracle功能。 根据Oracle文档 &#xff0c;Express Edition最多可以使用一个CPU和1 GB RAM&#xff0c;但是实际上存在其他限制并不总是很明显。 数据库连接…