java coin介绍_代码示例中的Java 7:Project Coin

java coin介绍

该博客通过代码示例介绍了一些新的Java 7功能,这些项目在Project Coin一词下进行了概述。 Project Coin的目标是向JDK 7添加一组小的语言更改。这些更改确实简化了Java语言语法。 更少的打字,更简洁的代码,愉悦的开发人员;-)让我们来研究一下。
先决条件

在计算机上安装Java 7 SDK
安装Eclipse Indigo 3.7.1

您需要寻找适合您操作系统的捆绑软件。

在Eclipse工作区中,您需要在运行时中定义已安装的Java 7 JDK。 在工作台中,转到窗口>首选项> Java>已安装的JRE,然后添加Java 7主目录。

接下来,您需要在Java>编译器中将编译器级别设置为1.7。

项目币

改进的文字

文字是固定值的源代码表示。

“在Java SE 7和更高版本中,数字文字中数字之间的任何位置都可以出现任何数量的下划线字符(_)。 此功能使您可以将数字文字中的数字组分开,这可以提高代码的可读性。” (来自Java教程 )

public class LiteralsExample {  public static void main(String[] args) {  System.out.println("With underscores: ");  long creditCardNumber = 1234_5678_9012_3456L;  long bytes = 0b11010010_01101001_10010100_10010010;  System.out.println(creditCardNumber);  System.out.println(bytes);  System.out.println("Without underscores: ");  creditCardNumber = 1234567890123456L;  bytes = 0b11010010011010011001010010010010;  System.out.println(creditCardNumber);  System.out.println(bytes);  }  
}

注意文字中的下划线(例如1234_5678_9012_3456L)。 结果写入控制台:

With underscores:   
1234567890123456  
-764832622  
Without underscores:   
1234567890123456  
-764832622

如您所见,下划线对值没有影响。 它们只是用来使代码更具可读性。

SafeVarargs

在JDK 7之前的版本中,调用某些varargs库方法时始终会收到未经检查的警告。 如果没有新的@SafeVarargs批注,此示例将创建未经检查的警告。

public class SafeVarargsExample {  @SafeVarargs  static void m(List<string>... stringLists) {  Object[] array = stringLists;  List<integer> tmpList = Arrays.asList(42);  array[0] = tmpList; // compiles without warnings  String s = stringLists[0].get(0); // ClassCastException at runtime  }  public static void main(String[] args) {  m(new ArrayList<string>());  }  }</string></integer></string>

第3行中的新注释无助于在运行时解决烦人的ClassCastException 。 而且,它只能应用于静态方法和最终方法。 因此,我相信这不会有太大帮助。 Java的未来版本将对不安全的代码产生编译时错误,例如上面的示例中的代码。

钻石

在Java 6中,需要耐心地创建地图列表。 看这个例子:

public class DiamondJava6Example {public static void main(String[] args) {List<Map<Date, String>> listOfMaps = new ArrayList<Map<Date, String>>(); // type information twice!HashMap<Date, String> aMap = new HashMap<Date, String>(); // type information twiceaMap.put(new Date(), "Hello");listOfMaps.add(aMap);System.out.println(listOfMaps);}
}

正如你可以在3和4行转让的右侧看到你需要重复的类型信息的listOfMaps变量还有的aMap变量。 在Java 7中,这不再是必需的:

public class DiamondJava7Example {public static void main(String[] args) {List<Map<Date, String>> listOfMaps = new ArrayList<>(); // type information once!HashMap<Date, String> aMap = new HashMap<>(); // type information once!aMap.put(new Date(), "Hello");listOfMaps.add(aMap);System.out.println(listOfMaps);}
}

多渔获

在Java 7中,不需要为每个单个异常都包含catch子句,可以在一个子句中捕获多个异常。 您记得这样的代码:

public class HandleExceptionsJava6Example {  public static void main(String[] args) {  Class string;  try {  string = Class.forName("java.lang.String");  string.getMethod("length").invoke("test");  } catch (ClassNotFoundException e) {  // do something  } catch (IllegalAccessException e) {  // do the same !!  } catch (IllegalArgumentException e) {  // do the same !!  } catch (InvocationTargetException e) {  // yeah, well, again: do the same!  } catch (NoSuchMethodException e) {  // ...  } catch (SecurityException e) {  // ...  }  }  
}

从Java 7开始,您可以像这样编写它,这使我们的生活更加轻松:

public class HandleExceptionsJava7ExampleMultiCatch {  public static void main(String[] args) {  try {  Class string = Class.forName("java.lang.String");  string.getMethod("length").invoke("test");  } catch (ClassNotFoundException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {  // do something, and only write it once!!!  }  }  
}

switch语句中的字符串

由于Java 7可以在switch子句中使用字符串变量。 这是一个例子:

public class StringInSwitch {  public void printMonth(String month) {  switch (month) {  case "April":  case "June":  case "September":  case "November":  case "January":  case "March":  case "May":  case "July":  case "August":  case "December":  default:  System.out.println("done!");  }  }  
}

资源试穿

此功能确实有助于减少意外的运行时执行。 在Java 7中,可以使用所谓的try-with-resource子句,该子句在发生异常时自动关闭所有打开的资源。 看例子:

import java.io.File;  
import java.io.FileNotFoundException;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.OutputStream;  public class TryWithResourceExample {  public static void main(String[] args) throws FileNotFoundException {  // Java 7 try-with-resource  String file1 = "TryWithResourceFile.out";  try (OutputStream out = new FileOutputStream(file1)) {  out.write("Some silly file content ...".getBytes());  ":-p".charAt(3);  } catch (StringIndexOutOfBoundsException | IOException e) {  System.out.println("Exception on operating file " + file1 + ": " + e.getMessage());  }  // Java 6 style  String file2 = "WithoutTryWithResource.out";  OutputStream out = new FileOutputStream(file2);  try {  out.write("Some silly file content ...".getBytes());  ":-p".charAt(3);  } catch (StringIndexOutOfBoundsException | IOException e) {  System.out.println("Exception on operating file " + file2 + ": " + e.getMessage());  }  // Let's try to operate on the resources  File f1 = new File(file1);  if (f1.delete())  System.out.println("Successfully deleted: " + file1);  else  System.out.println("Problems deleting: " + file1);  File f2 = new File(file2);  if (f2.delete())  System.out.println("Successfully deleted: " + file2);  else  System.out.println("Problems deleting: " + file2);  }  
}

在第14行中,try-with-resource子句用于打开我们要操作的文件。 然后,第16行生成一个运行时异常。 请注意,我没有明确关闭资源。 当您使用try-with-resource时,这是自动完成的。 当您使用第21-30行中显示的Java 6等效项时,*不是*。

该代码会将以下结果写入控制台:

Exception on operating file TryWithResourceFile.out: String index out of range: 3  
Exception on operating file WithoutTryWithResource.out: String index out of range: 3  
Successfully deleted: TryWithResourceFile.out  
Problems deleting: WithoutTryWithResource.out

就项目硬币而言就是这样。 在我眼中非常有用的东西。

参考:来自我们JCG合作伙伴 Niklas的“ Java 7:代码示例中的项目代币”。

相关文章 :

  • Java 7功能概述
  • 在Java 7中处理文件
  • 具有Java 7中自动资源管理功能的GC
  • Java 7:尝试资源
  • Java SE 7、8、9 –推动Java前进

翻译自: https://www.javacodegeeks.com/2012/01/java-7-project-coin-in-code-examples.html

java coin介绍

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

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

相关文章

如何设置浏览器禁止使用UC浏览器

通过UA可以判断浏览器是否是UC浏览器 if(navigator.userAgent.indexOf(UCBrowser)>-1) { alert("当前浏览器不支持本站&#xff0c;建议更换为QQ浏览器"); } 转载于:https://www.cnblogs.com/mqingqing123/p/4555188.html

Bash脚本教程之引号和转义

目录 转义 单引号 双引号 Here 文档 Here 字符串 转义 某些字符在 Bash 里面有特殊含义(比如$、&、*)。 $ echo $date$ 上面例子中,输出$date不会有任何结果,因为$是一个特殊字符。 如果想要原样输出这些特殊字符,就必须在它们前面加上反斜杠,使其变成普通字…

php分页教程,php 如何分页 教程

php 如何分页 教程这是一篇初级入门的教程了,我们这个与asp分页有一点的区别了,下面我们就来讲讲最简单的php分页代码吧,我们首先要有一个数据库.假如有我们有了一个数数据库里面有一张表a下面就是我们要讲到的分页代码了.$page $_GET[page]//这里是用来获取当前的页面,下面我…

在Java中实现过滤器和面包店锁

为了了解锁的工作方式&#xff0c;实现自定义锁是一个好方法。 这篇文章将展示如何在Java上实现Filter和Bakery锁&#xff08;自旋锁&#xff09;&#xff0c;并将它们的性能与Java的ReentrantLock进行比较。 过滤器锁和面包房锁满足互斥并且也是无饥饿算法&#xff0c;面包房锁…

Burpsuite工具的证书安装

Burpsuite工具的证书安装 Bursuite作为一款可以用来挖掘各种各样的WEB安全漏洞工具&#xff0c;在web安全渗透方面经常会使用到&#xff0c;可以用Bursuite进行对数据的抓包&#xff0c;其不安装证书时只能抓取http的包&#xff0c;安装证书就可以抓取https包&#xff0c;并分析…

Bash脚本教程之变量

目录 简介 创建变量 读取变量 删除变量 输出变量,export 命令 特殊变量 变量的默认值 declare 命令

【下班后学Android】Android开发环境搭建

Android开发环境搭建方法&#xff1a; 方法一&#xff1a;百度搜索“Android开发环境搭建”&#xff1a;http://jingyan.baidu.com/article/bea41d437a41b6b4c51be6c1.html。 博主在土耳其出差期间&#xff0c;按照该步骤安装&#xff0c;完全OK。但是&#xff0c;回国后&#…

物资申请php,php学生捐赠物品管理系统

捐赠物品管理系统采用php编程语言开发,mysql作为后台数据库支持,运行在wamp,appserv等集成环境上.为了方便学生捐赠物品&#xff0c;让更多的贫困人民得到更多的帮助&#xff0c;开发一套校园物品捐赠系统是十分必要的。而且可以培养学生的社会责任感&#xff0c;让他们更加富有…

哥斯拉Webshell

一&#xff0e;启动 命令&#xff1a;java -jar Godzilla-V2.96.jar 启动时同目录会生成data.db数据库存放数据 启动成功界面如下 二&#xff0e;使用&#xff08;在本机实测&#xff09; 这里演示jsp文件进行连接&#xff08;需要提前配置好jsp环境&#xff09; 1.点击管…

Bash脚本教程之字符串操作

目录 字符串的长度 子字符串 搜索和替换 改变大小写 字符串的长度 获取字符串长度的语法如下。 ${#varname} 下面是一个例子。 $ myPath=/home/cam/book/long.file.name $ echo ${#myPath} 29 大括号{}是必需的,否则 Bash 会将$#理解成脚本的参数个数,将变量名理解成…

openid saml2_单一登录云:SAML和OpenId

openid saml2当访问不同组织拥有的不同应用程序时&#xff0c;每次从一个应用程序转到另一个应用程序时都必须进行身份验证。 这不仅耗时&#xff0c;而且您还必须记住多个经常丢失的密码。 单一登录是一次认证的能力&#xff0c;并且能够使用已认证的身份在应用程序之间无缝切…

小不咖啡——自己写着玩的网站

请戳&#xff1a; www.xiao-bu.com 性能欠佳&#xff0c;bug很多&#xff0c;切勿见怪。。。 大部分时间在画图。。。一口老血喷在屏幕上。。。。 转载于:https://www.cnblogs.com/hydor/p/4561184.html

apache配置 index.php,修改apache配置文件去除thinkphp url中的index.php

例如你的原路径是 http://localhost/test/index.php/index/add那么现在的地址是 http://localhost/test/index/add如何去掉index.php呢?1、httpd.conf配置文件中加载了mod_rewrite.so模块 //在APACHE里面去配置#LoadModule rewrite_module modules/mod_rewrite.so把前面的警号…

一次线上ctf的网络协议分析

拿到的是两个东西 我们先看secret.log 很多乱码但是有一串16进制数 把这段复制下来&#xff0c;我们放到HxD看 点击新建&#xff0c;直接粘贴 发现不对&#xff0c;观察头部&#xff0c;发现少了一个数&#xff08;5&#xff09; 因为加上5就是一个rar头部 即 导出来&…

Bash脚本教程之算数运算

目录 算术表达式 数值的进制 位运算 逻辑运算 赋值运算 求值运算 expr 命令 let 命令 算术表达式 ((...))语法可以进行整

Hibernate Collection Cache如何工作

介绍 之前&#xff0c;我描述了Hibernate用于存储实体的二级缓存条目结构。 除了实体&#xff0c;Hibernate还可以存储实体关联&#xff0c;本文将阐明集合缓存的内部工作原理。 领域模型 对于即将进行的测试&#xff0c;我们将使用以下实体模型&#xff1a; 存储库具有一组C…

linux php 版本切换,linux更换PHP版本,多个PHP版本切换

各位兄弟姐妹&#xff0c;linux下怎么进行更换PHP版本&#xff0c;切换不同的PHP版本呢&#xff1f;比如说我现在的PHP版本是5.3 我想要换成5.5 之后我可以在这两个版本间切换&#xff1f;我现在的情况是centos6.5 php版本是5.3 想要升级到5.5回复内容&#xff1a;各位兄弟姐妹…

配置防火墙打开 80 端口

1.打开iptables vi /etc/sysconfig/iptables 2.增加一行 -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 3.重启防火墙 service iptables restart转载于:https://www.cnblogs.com/lanhuan/p/4561293.html

JSFuck奇葩的js编码

以前对黑客很崇拜&#xff0c;黑客的世界无比精彩。最近为了炫耀&#xff0c;想起了这段特殊的代码。 [][([外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1GiImO3K-1631794288635)((![][])][![]]([外链图片转存失败,源站可能有防盗链机制,建议将图片…

Bash脚本教程之行操作

目录 简介 光标移动 清除屏幕 编辑操作 自动补全 操作历史 基本用法 history 命令