Tag: java 8

如何从Java 8中的LocalDateTime获取毫秒

我想知道是否有一种方法可以使用Java 8的新LocalDate , LocalTime或LocalDateTime类从1-1-1970(epoch)获取当前毫秒数。 已知的方式如下: long currentMilliseconds = new Date().getTime(); 要么 long currentMilliseconds = System.currentTimeMillis();

添加两个Java 8stream或一个额外的元素到一个stream

我可以添加stream或额外的元素,如下所示: Stream stream = Stream.concat(stream1, Stream.concat(stream2, Stream.of(element)); 我可以随时添加新的东西,像这样: Stream stream = Stream.concat( Stream.concat( stream1.filter(x -> x!=0), stream2) .filter(x -> x!=1), Stream.of(element)) .filter(x -> x!=2); 但这很丑,因为concat是静态的。 如果concat是一个实例方法,上面的例子会更容易阅读: Stream stream = stream1.concat(stream2).concat(element); 和 Stream stream = stream1 .filter(x -> x!=0) .concat(stream2) .filter(x -> x!=1) .concat(element) .filter(x -> x!=2); 我的问题是: 1) concat是静态的吗? 还是有一些等价的实例方法,我失踪了? 2)无论如何,有没有更好的方法来做到这一点?

Java 8的Optional.ifPresent和if-not-Present的函数风格?

在Java 8中,如果它存在,我想对Optional对象做些什么,如果它不存在,则做另一件事。 if (opt.isPresent()) { System.out.println("found"); } else { System.out.println("Not found"); } 不过,这不是一种“function性风格”。 Optional有一个ifPresent()方法,但是我无法链接一个orElse()方法。 因此,我不能写: opt.ifPresent( x -> System.out.println("found " + x)) .orElse( System.out.println("NOT FOUND")); 回复@assylias,我不认为Optional.map()适用于以下情况: opt.map( o -> { System.out.println("while opt is present…"); o.setProperty(xxx); dao.update(o); return null; }).orElseGet( () -> { System.out.println("create new obj"); dao.save(new obj); return null; }); 在这种情况下,当opt出现时,我更新它的属性并保存到数据库中。 当它不可用时,我创build一个新的obj并保存到数据库。 注意在两个lambda中,我必须返回null 。 但是,当opt出现时,两个lambda将被执行。 […]

将Java 7编译代码升级到Java 8有什么好处吗?

我有一个使用Java 7编写的旧应用程序。它在Java 8 JRE中运行良好。 我不打算重写任何代码来使用Java 8function。 将编译代码升级到最新的Java 8 JDK是否有任何技术优势? 清楚的是,这些代码目前使用Java 7进行编译,并且已经与最新的Java 8 JRE一起运行。 它应该已经从Java 8运行时改进中受益。 这个问题是通过编译版本8并使用Java 8编译的字节码运行是否会有好处。 另外,我不关心开发人员的生产力等非技术性好处。 我认为这些是重要的,但不是这个问题的重点。 我要求的是没有开发团队的生产代码。 纯粹处于维护模式。

我怎样才能从Java 8stream内引发CHECKEDexception? (不包装成未经检查的例外)

我怎样才能从Java 8stream/ lambdas中引发CHECKEDexception? 换句话说,我想编译这样的代码: public List<Class> getClasses() throws ClassNotFoundException { List<Class> classes = Stream.of("java.lang.Object", "java.lang.Integer", "java.lang.String") .map(className -> Class.forName(className)) .collect(Collectors.toList()); return classes; } 此代码不会编译,因为上面的Class.forName()方法会抛出ClassNotFoundException 。 请注意,我不想将检查的exception包装在运行时exception中,而是抛出包装的未经检查的exception。 我想抛出检查exception本身 ,而不添加丑陋的try / catches到stream。

Java 8代码可以编译为在Java 7 JVM上运行吗?

Java 8引入了重要的新语言function,如lambdaexpression式。 这些语言变化是否伴随着编译的字节码中的重大变化,如果不使用某些retrotranslator,将会阻止它在Java 7虚拟机上运行?

Java 8方法引用:提供能够提供参数化结果的供应商

我想用 java.util.Optional.orElseThrow() 用一个Exceptiontypes来请求一个构造函数参数。 像这样的东西: orElseThrow(MyException::new(someArgument)) // obviously NOT working 有没有办法创build一个供应商,传递我的参数值?

为什么克隆不被弃用?

人们普遍认为Java中的Cloneable接口已经被破坏了。 这个原因有很多,我不会提到; 其他人已经做到了。 这也是Java架构师自己的立场。 所以我的问题是:为什么还没有被弃用呢? 如果核心Java团队已经决定它被破坏,那么他们也必须考虑弃用。 他们的反对理由是什么(在Java 8中,它还没有被废弃 )?

Java 8stream和arrays上的操作

我刚刚发现了新的Java 8streamfunction。 来自Python,我想知道现在是否有一个简单的方法来做像求和这样的数组操作,将两个数组以“一行pythonic”的方式相乘? 谢谢

如何将Java 8 IntStream转换为List?

我正在看IntStream的文档,我看到一个toArray方法,但没有办法直接进入List<Integer> 当然,有一种方法可以将Stream转换为List ?