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,一经查实,立即删除!

相关文章

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

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

Burpsuite工具的证书安装

Burpsuite工具的证书安装 Bursuite作为一款可以用来挖掘各种各样的WEB安全漏洞工具&#xff0c;在web安全渗透方面经常会使用到&#xff0c;可以用Bursuite进行对数据的抓包&#xff0c;其不安装证书时只能抓取http的包&#xff0c;安装证书就可以抓取https包&#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.点击管…

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

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

Hibernate Collection Cache如何工作

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

模拟服务器和客户端交互的python脚本

脚本&#xff1a; 模拟服务器和客户端交互&#xff1a; import argparse, socket from datetime import datetimeIP "127.0.0.1" CODING "utf8" MAX_BYTES 65535 # UDP最大长度def server(port): # port&#xff1a;端口号sock socket.socket(socke…

动态规划 dynamic programming

动态规划dynamic programming June,7, 2015 作者&#xff1a;swanGooseMan 出处&#xff1a;http://www.cnblogs.com/swanGooseMan/p/4556588.html 声明&#xff1a;本文采用以下协议进行授权&#xff1a; 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 &…

利用Vulnhub复现漏洞 - JBoss JMXInvokerServlet 反序列化漏洞

JBoss JMXInvokerServlet 反序列化漏洞 Vulnhub官方复现教程漏洞原理 复现过程启动环境端口设置浏览器设置BurpSuit设置 复现漏洞序列化数据生成发送POCEXP Vulnhub官方复现教程 https://vulhub.org/#/environments/jboss/JMXInvokerServlet-deserialization/ 漏洞原理 这…

linux mysql 安装启动失败,Linux服务器一键安装包的mysql启动失败

Linux服务器上用一键安装包配置的环境&#xff0c;启动mysql失败&#xff0c;提示如下错误信息&#xff1a;排查方法&#xff1a;1、查看服务器的磁盘空间是否正常&#xff0c;登录服务器执行命令df -h查看磁盘空间&#xff0c;如果服务器的系统盘或者数据盘空间满了&#xff0…

Ubuntu 安装mysql和简单操作

ubuntu上安装mysql非常简单只需要几条命令就可以完成。 1. sudo apt-get install mysql-server2. apt-get isntall mysql-client3. sudo apt-get install libmysqlclient-dev安装过程中会提示设置密码什么的&#xff0c;注意设置了不要忘了&#xff0c;安装完成之后可以使用如…

在BurpSuite中安装Jython环境

在BurpSuite中安装Jython环境 下载模块 下载地址 https://www.jython.org/download.html 下载 Jython Standalone版本的 打开burp 第一个框子是刚刚下载jar包 第二个时候python的模块文件地址 要到 lib\site-packages里面 成功 转载于&#xff1a;https://blog.csdn.net/w…

matlab dtft的函数,DTFT的Matlab矩阵计算的理解

其实是早应该想到的&#xff0c;今天写程序的时候想到了。然后&#xff0c;跟同学说起来&#xff0c;说&#xff0c;原来国外的教材很多都是矩阵的形式来表示离散傅里叶变换的。但是国内的教材没有这么表达。一个是&#xff0c;自己看的东西还是少了&#xff0c;一个是&#xf…

xss测试工具(xsstrike基于python)

xsstrike很强 项目地址&#xff1a; https://github.com/s0md3v/XSStrike安装&#xff1a; git clone https://github.com/s0md3v/XSStrike.git使用文档&#xff1a; https://github.com/s0md3v/XSStrike/wiki/Usageusage: xsstrike.py [-h] [-u TARGET] [--data DATA] [-t …

变量和字符串

变量名就像我们现实社会的名字&#xff0c;把一个值赋值给一个名字时&#xff0c;Ta会存储在内存中&#xff0c;称之为变量&#xff08;variable)&#xff0c;在大多数语言中&#xff0c;都把这种动作称为&#xff08;给变量赋值&#xff09;或&#xff08;把值存储在变量中&am…

Windows安全配置加固

安全配置加固——账号口令 账号优化 目的是为了梳理系统中的账号以及口令&#xff0c;避免默认账号及弱口令的存在 查看账号方式 在Windows中查看账号的方式有以下几种&#xff0c;这里就来简述一下 第一种&#xff1a;开始->运行->compmgmt.msc&#xff08;进入计算…

存根类 测试代码 java_常规单元测试和存根–测​​试技术4

存根类 测试代码 java我的上一个博客是有关测试代码的方法以及讨论您做什么和不必进行测试的方法的一系列博客中的第三篇。 它基于我使用一种非常常见的模式从数据库检索地址的简单方案&#xff1a; …并且我提出了这样的想法&#xff0c;即任何不包含任何逻辑的类实际上都不需…

使用 Python 爬取网页数据

在需要过去一些网页上的信息的时候&#xff0c;使用 Python 写爬虫来爬取十分方便。 1. 使用 urllib.request 获取网页 urllib 是 Python 內建的 HTTP 库, 使用 urllib 可以只需要很简单的步骤就能高效采集数据; 配合 Beautiful 等 HTML 解析库, 可以编写出用于采集网络数据的…

多线程(初级篇)

相关概念进程是指一个内存中运行的应用程序&#xff0c;每个进程都有自己独立的一块内存空间&#xff0c;一个进程中可以启动多个线程。一个进程是一个独立的运行环境&#xff0c;它可以被看作一个程序或者一个应用。而线程是在进程中执行的一个任务。Java运行环境是一个包含了…

了解ADF生命周期中的ADF绑定

在本文中&#xff0c;我将重点介绍ADF绑定层&#xff0c;并探讨当最初从浏览器请求带有某些数据的ADF页面时&#xff0c;它如何工作。 Oracle ADF提供了自己的JSF生命周期扩展版。 实际上&#xff0c;ADF扩展了标准JSF生命周期实现类&#xff0c;并提供了ADF阶段侦听器&#x…