Tag: java 8

为什么java 8 lambdas允许访问非final类变量?

我理解为什么编译器不接受以下内容: class Foo { public Supplier makeSupplier() { String str = “hello”; Supplier supp = () -> return str; // gives the expected compile error because // str is not effectively final // (str is a local variable, compile-time error // as per JLS 15.27.2.) str = “world”; return supp; } } 令我困惑的是编译器接受以下内容,并且unit testing通过: class […]

Java禁用dpi-aware无法正常工作

我正在尝试使用-Dsun.java2d.dpiaware=false参数运行Java应用程序,但没有任何反应。 我希望有一个模糊的用户界面,但图标和字体的大小正常,似乎这个标志不起作用。 我在Windows 8.1上使用JDK 1.8.0_45。 我发现了这个错误https://bugs.openjdk.java.net/browse/JDK-8080153但我不明白如何解决它。

Collectors.toMap具有相同的键(打印相同的键)

我有这个代码来获取地图: List myList = myMethod.getList(); myList.stream().collect( Collectors.toMap( MyObject::getKey, MyObject::getValue, (e1, e2) -> { System.out.println(“Duplicate keys !!!”); return e1; }, LinkedHashMap::new ) ); 我如何用重复键打印消息“重复键”?

getDeclaredMethods()在Java 7与Java 8中的表现不同

考虑以下小例子: package prv.rli.codetest; import java.lang.reflect.Method; public class BreakingInterfaces { interface Base { BaseFoo foo(); interface BaseFoo { } } interface Derived extends Base { DerivedFoo foo(); interface DerivedFoo extends BaseFoo { } } public static void main(String[] args) { dumpDeclaredMethods(Derived.class); } private static void dumpDeclaredMethods(Class class1) { System.out.println(“—” + class1.getSimpleName() + “—“); Method[] methods = […]

在JSR-310中查找下一个星期几的事件

给定一个JSR-310对象,比如LocalDate ,我怎样才能找到下周三(或任何其他星期几)的日期? LocalDate today = LocalDate.now(); LocalDate nextWed = ???

Java 8的orElse没有按预期工作

考虑以下方法,如果该字段存在,则返回该字段,或者在找到该字段之前递归调用自身: private Field getField(Class clazz, String p) { Optional field = Arrays.stream(clazz.getDeclaredFields()) .filter(f -> p.equals(f.getName())) .findFirst(); return field.isPresent() ? field.get() : getField(clazz.getSuperclass(), p); } 虽然这有效,但我认为我可以缩短它: private Field getField(Class clazz, String p) { return Arrays.stream(clazz.getDeclaredFields()) .filter(f -> p.equals(f.getName())) .findFirst() .orElse(getField(clazz.getSuperclass(), p)); } 但奇怪的是, .orElse部分似乎总是被称为。 我在这里想念的是什么?

请使用类名解释Java 8方法参考实例方法

public interface MyFunc { boolean func(T v1, T v2); } public class HighTemp { private int hTemp; HighTemp(){ } public HighTemp(int ht) { this.hTemp = ht; } boolean sameTemp(HighTemp ht2){ return hTemp == ht2.hTemp; } boolean lessThanTemp(HighTemp ht2){ return hTemp < ht2.hTemp; } } class InstMethWithObjRef { static int counter(T[] vals, MyFunc f, T v){ […]

Java 8查找并替换匹配的字符串

我试图在errorMessage messages.properties中找到一个字符串,如果errorMessage有字符串我需要用相应的值替换它 我有messages.properties如下 inv_date=INVOICE DATE inv_id=INVOICE NUMBER cl_id=CLIENT ID lf_matter_id=LAW FIRM MATTER ID inv_total_net_due=INVOICE TOTAL (inv_start_date|invoice start date)=BILLING START DATE (inv_end_date|invoice end date)=BILLING END DATE inv_desc=INVOICE DESCRIPTION units=LINE ITEM NUMBER OF UNITS discount_amount=LINE ITEM ADJUSTMENT AMOUNT total_amount=LINE ITEM TOTAL (charge_date|charge date)= LINE ITEM DATE acca_task=LINE ITEM TASK CODE acca_expense=LINE ITEM EXPENSE CODE acca_activity= LINE ITEM […]

具有InterBase JDBC驱动程序的NoClassDefFoundError sun / io / ByteToCharConverter

使用InterClient 7.5.1和8.1.5,在Java 8中创建新的JDBC连接失败 java.lang.NoClassDefFoundError: sun/io/ByteToCharConverter 此类似乎由InterClient JDBC库引用或使用。 Java 7没有出现错误。有没有办法解决此错误? 此代码重现了Java 8上的问题: package com.example.so25365952; import java.sql.DriverManager; import java.sql.SQLException; import java.util.logging.Level; import java.util.logging.Logger; public class Main { interbase.interclient.Connection conn; public static void main(String[] args) { try { Class.forName(“interbase.interclient.Driver”); DriverManager.getConnection(“jdbc:interbase://localhost/data/mydb.gdb”, “sysdba”, “password123”); } catch (ClassNotFoundException | SQLException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } } } 输出: 线程“main”java.lang.NoClassDefFoundError中的exception:sun / […]

我在哪里可以找到JDK 8 / JavaFX 8源代码?

我想覆盖FXMLLoader的实现并重新编译JDK 8。 哪里可以找到JDK8 / JavaFX 8的源代码?