Tag: java 7

JDK 7中的类型推断比JDK 6更具限制性吗?

我认为这可能与为什么List的通用演员有关? 扩展Set ..>到List 在Sun JDK 6上成功但在Oracle JDK 7上无法编译? 如果我们采用以下类,它们在JDK 6下编译正常: public final class Foo { private final V value; private Foo(final V value) { this.value = value; } public static Foo of(final R value) { return new Foo(value); } } final class Tester { @Test(groups=”unit”) public static void test() { bar(Foo.of(BigDecimal.ZERO)); // This line fails […]

指向JAVA_HOME定义的JRE的Java AppBundler应用程序

我一直在使用Java Application Bundler将Java应用程序打包为.app。 如果我在.app包中包装JRE7,我已设法运行该应用程序。 是否可以将.app(在Info.plist中)配置为指向JAVA_HOME环境变量定义的JRE? 如果我这样做,我得到“无法加载Java运行时环境”! 我试图以不同的方式配置JAVA_HOME,但没有成功! 任何人都可以提供任何帮助或建议吗?

Java 7 – 精确重新抛出最终exception

在以前的java版本中,重新抛出exception被视为抛出catch参数的类型。 例如: public static void test() throws Exception{ DateFormat df = new SimpleDateFormat(“yyyyMMdd”); try { df.parse(“x20110731”); new FileReader(“file.txt”).read(); } catch (Exception e) { System.out.println(“Caught exception: ” + e.getMessage()); throw e; } } 在Java 7中,如果您声明exceptionfinal ,则可以更精确地了解抛出的exception: //(doesn’t compile in Java<7) public static void test2() throws ParseException, IOException{ DateFormat df = new SimpleDateFormat("yyyyMMdd"); try { df.parse("x20110731"); new […]

generics中的通配符:“? 超级T“工作时”? 延伸T“不?

我的问题是关于Java 7中的generics。假设我们有这样的类层次结构: interface Animal {} class Lion implements Animal {} class Butterfly implements Animal {} 就像在Java Generics Tutorial中一样 我们还有一堂课 class Cage { private List arr = new ArrayList(); public void add(T t) { arr.add(t); } public T get() { return arr.get(0); } } 以下是使用该类的代码: public static void main(String[] args) { Cage cage = new Cage(); […]

Java是向后兼容的,但是当我们将jdk从1.6升级到1.8时,为什么我们需要升级许多库?

最近,我在一个Java项目中将Jdk版本从1.6升级到1.8 。 但是有一些编译或运行时错误,所以我必须升级一些库: gradle: 1.9到1.10 弹簧: 3.x到4.x 这是因为他们使用的是早期版本的ASM,但仅支持5.x版本的jdk 1.8 Java表示它是向后兼容的,但为什么原始版本的库无法直接使用jdk 1.8?

Java 8中的模糊方法,为什么?

public static void main(String… args){ then(bar()); // Compilation Error } public static E bar() { return null; } public static void then(Throwable actual) { } public static void then(CharSequence actual) { } 编译结果(来自命令行javac Ambiguous.java ) Ambiguous.java:4: error: reference to then is ambiguous then(bar()); ^ both method then(Throwable) in Ambiguous and method then(CharSequence) in Ambiguous match […]

在Java 7中,正则表达式命名为捕获组支持

由于Java 7正则表达式API提供了对命名捕获组的支持。 方法java.util.regex.Matcher.group(String)返回由给定的命名捕获组捕获的输入子序列,但API文档中没有可用的示例。 在Java 7中指定和检索命名捕获组的正确语法是什么?

OpenJDK JVM与Oracle Java SE JVM相同吗?

据我所知,Oracle Java SE包含不属于OpenJDK的闭源扩展和工具,但是Oracle Java SE JVM与OpenJDK JVM相同,或者Oracle在将其作为Java SE JVM发布之前是否对OpenJDK JVM进行了更改? 更新1:我从JDK7更新项目中找到了一些信息: http : //openjdk.java.net/projects/jdk7u/qanda.html 7 Update Project是否会收到Oracle的安全修复程序? 是。 与OpenJDK 6一样,安全修复程序首先保密,并在被推送到公共森林之前应用于私有森林,作为影响JDK发布列车的修复程序的一般同步发布的一部分。 此外,他们不会通过公共代码审查和回复审批流程,他们在项目问题跟踪器中的相应问题将不会公开显示。

Null-safe方法调用Java7

我想获得有关此代码的Java7此function的详细信息 public String getPostcode(Person person) { if (person != null) { Address address = person.getAddress(); if (address != null) { return address.getPostcode(); } } return null; } 可以做这样的事情 public String getPostcode(Person person) { return person?.getAddress()?.getPostcode(); } 但坦率地说,对我来说不太清楚。请解释一下?

在java 7中切换忽略大小写

我正在做Java 7新function的POC。 我有代码在switch语句中使用String,它的工作原理。 我想让它在不区分大小写的情况下工作。 有没有办法在String上检查ignoreCase? package com.java.j7; public class Test { final private String _NEW =”NEW”; final private String _PENDING = “PENDING”; final private String _CLOSED = “CLOSED”; final private String _REJECTED =”REJECTED”; public static void main(String… strings){ Test j = new Test(); j.processItem(“new”); j.processItem(“pending”); j.processItem(“closed”); j.processItem(“rejected”); } void processItem(String s){ switch (s) { case […]