当前位置:  开发笔记 > 编程语言 > 正文

java 7中的新功能

如何解决《java7中的新功能》经验,为你挑选了3个好方法。

Java 7中将实现哪些新功能?他们现在在做什么?



1> didxga..:

JDK 7发行说明中的Java SE 7 特性和增强功能

这是OpenJDK 7功能页面中的Java 7新功能摘要:

vm  JSR 292: Support for dynamically-typed languages (InvokeDynamic)
        Strict class-file checking
lang    JSR 334: Small language enhancements (Project Coin)
core    Upgrade class-loader architecture
        Method to close a URLClassLoader
        Concurrency and collections updates (jsr166y)
i18n    Unicode 6.0
        Locale enhancement
        Separate user locale and user-interface locale
ionet   JSR 203: More new I/O APIs for the Java platform (NIO.2)
        NIO.2 filesystem provider for zip/jar archives
        SCTP (Stream Control Transmission Protocol)
        SDP (Sockets Direct Protocol)
        Use the Windows Vista IPv6 stack
        TLS 1.2
sec     Elliptic-curve cryptography (ECC)
jdbc    JDBC 4.1
client  XRender pipeline for Java 2D
        Create new platform APIs for 6u10 graphics features
        Nimbus look-and-feel for Swing
        Swing JLayer component
        Gervill sound synthesizer [NEW]
web     Update the XML stack
mgmt    Enhanced MBeans [UPDATED]

Java 1.7中新功能的代码示例

尝试使用资源声明

这个:

BufferedReader br = new BufferedReader(new FileReader(path));
try {
   return br.readLine();
} finally {
   br.close();
}

变为:

try (BufferedReader br = new BufferedReader(new FileReader(path)) {
   return br.readLine();
}

您可以声明要关闭的多个资源:

try (
   InputStream in = new FileInputStream(src);
   OutputStream out = new FileOutputStream(dest))
{
 // code
}

数字文字中的下划线

int one_million = 1_000_000;

开关中的字符串

String s = ...
switch(s) {
 case "quux":
    processQuux(s);
    // fall-through

  case "foo":
  case "bar":
    processFooOrBar(s);
    break;

  case "baz":
     processBaz(s);
    // fall-through

  default:
    processDefault(s);
    break;
}

二进制文字

int binary = 0b1001_1001;

通用实例创建的改进类型推断

Map> anagrams = new HashMap>();

变为:

Map> anagrams = new HashMap<>();

多次异常捕获

这个:

} catch (FirstException ex) {
     logger.error(ex);
     throw ex;
} catch (SecondException ex) {
     logger.error(ex);
     throw ex;
}

变为:

} catch (FirstException | SecondException ex) {
     logger.error(ex);
    throw ex;
}

SafeVarargs

这个:

@SuppressWarnings({"unchecked", "varargs"})
public static void printAll(List... lists){
    for(List list : lists){
        System.out.println(list);
    }
}

变为:

@SafeVarargs
public static void printAll(List... lists){
    for(List list : lists){
        System.out.println(list);
    }
}


+1代码,用于难以找到的代码示例.你能加点更多吗?
改进的类型推断似乎是一个来自C#的悲伤副本,其中一个奇怪的变化,其中输入了一个引用,但对象不是?? 什么喜剧!

2> 小智..:

Java标准版的新功能(JSE 7)

    使用JLayer类装饰组件:

    JLayer类是Swing组件的灵活且强大的装饰器.Java SE 7中的JLayer类在精神上与java.net中的JxLayer项目项目类似.JLayer类最初基于JXLayer项目,但其API分别发展.

    switch中的字符串声明:

    在JDK 7中,我们可以在switch语句的表达式中使用String对象.Java编译器通常使用String对象生成比使用链式if-then-else语句更高效的字节码.

    通用实例的类型推断:

    只要编译器可以从上下文中推断出类型参数,我们就可以用一组空的类型参数(<>)替换调用泛型类的构造函数所需的类型参数.这对尖括号被非正式地称为钻石.Java SE 7支持通用实例创建的有限类型推断; 如果构造函数的参数化类型在上下文中很明显,则只能使用类型推断.例如,以下示例不编译:

    List l = new ArrayList<>();
    l.add("A");
    l.addAll(new ArrayList<>());
    

    相比之下,以下示例编译:

    List list2 = new ArrayList<>();
    l.addAll(list2);
    

    使用改进的类型检查捕获多个异常类型和重新抛出异常:

    在Java SE 7及更高版本中,单个catch块可以处理多种类型的异常.此功能可以减少代码重复.请考虑以下代码,其中包含每个catch块中的重复代码:

    catch (IOException e) {
        logger.log(e);
        throw e;
    }
    catch (SQLException e) {
        logger.log(e);
        throw e;
    }
    

    在Java SE 7之前的版本中,很难创建一种消除重复代码的常用方法,因为变量e具有不同的类型.以下示例(在Java SE 7及更高版本中有效)消除了重复的代码:

    catch (IOException|SQLException e) {
        logger.log(e);
        throw e;
    }
    

    catch子句指定块可以处理的异常类型,每个异常类型用竖线(|)分隔.

    java.nio.file包

    java.nio.file包及其相关的包装,java.nio.file.attribute,提供文件I/O和用于访问文件系统的全面支持.JDK 7中也提供了zip文件系统提供程序.

资料来源:http://ohmjavaclasses.blogspot.com/



3> Premraj..:

Java编程语言增强功能@ Java7

    二进制文字

    switch语句中的字符串

    尝试使用Resources或ARM(自动资源管理)

    多个异常处理

    禁止例外

    在文字中强调

    使用Diamond语法创建通用实例的类型推断

    使用Varargs方法使用不可恢复的形式参数时改进的编译器警告和错误

官方参考
官方参考java8
wiki参考

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有