我有一个关于CompletableFuture方法的问题:
public <U> CompletableFuture<U> thenApply(Function<? super T, ? extends U> fn)
Run Code Online (Sandbox Code Playgroud)
事情是JavaDoc说的就是这样:
返回一个新的CompletionStage,当该阶段正常完成时,将使用此阶段的结果作为所提供函数的参数执行.有关特殊完成的规则,请参阅CompletionStage文档.
线程怎么样?这将在哪个线程中执行?如果未来由线程池完成怎么办?
模块与open关键字之前和之后有什么区别?
例如:
open module foo {
}
module foo {
}
Run Code Online (Sandbox Code Playgroud) 根据这个关于Java 9的新版本字符串方案的博客,该版本应该是,例如MAJOR.MINOR.SECURITY,应该有3个数字和2个句点.
但是,使用Azul的Zulu 9,当我打印Java版本时,它有4个数字和3个句点:
./jdk/bin/java -version
openjdk version "9.0.0.15"
OpenJDK Runtime Environment (Zulu build 9.0.0.15+181)
OpenJDK 64-Bit Server VM (Zulu build 9.0.0.15+181, mixed mode)
Run Code Online (Sandbox Code Playgroud)
4个数字代表什么?
我想在eclipse氧气里面的gradle项目中使用java9.当我跑:
Run as> Gradle Test on GreeterTest.java
Run Code Online (Sandbox Code Playgroud)
使用以下代码:
package hello.test;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
import hello.Greeter;
class GreeterTest {
@Test
void test() {
Greeter greeter = new Greeter();
assertEquals("Hello world", greeter.sayHello());
}
}
Run Code Online (Sandbox Code Playgroud)
和我上课一样测试:
package hello;
public class Greeter {
public String sayHello() {
return "Hello world!";
}
}
Run Code Online (Sandbox Code Playgroud)
我收到错误消息
无法定位平台:'Java SE 9'使用工具链:'JDK 8(1.8)'.
我的eclipse.init是
Run Code Online (Sandbox Code Playgroud)-startup ../Eclipse/plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar --launcher.library /Users/stein/.p2/pool/plugins/org.eclipse.equinox.launcher.cocoa.macosx.x86_64_\1.1.550.v20170928-1359 -product org.eclipse.epp.package.jee.product -showsplash org.eclipse.epp.package.common --launcher.defaultAction openFile --launcher.a/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/jre/bin -vmargs -Dosgi.requiredJavaVersion=1.9 -Dosgi.instance.area.default=@user.home/eclipse-workspace -XX:+UseG1GC -XX:+UseStringDeduplication --add-modules=ALL-SYSTEM -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts -Dosgi.requiredJavaVersion=1.9 -Xms256m -Xmx1024m --add-modules=ALL-SYSTEM -Xdock:icon=../Resources/Eclipse.icns …
应该如何记录Java Record参数?我指的是最终成为构造函数参数、类字段的参数。
我试过:
/**
* @param name the name of the animal
* @param age the age of the animal
*/
public record Animal(String name, int age)
{
}
Run Code Online (Sandbox Code Playgroud)
但 IntelliJ IDEA 将@params标记为错误。我找不到有关这应该如何工作的在线示例。我发现的最接近的讨论是https://bugs.openjdk.java.net/browse/JDK-8225055。
我发现JDK 中的一些单元 测试似乎暗示这应该有效。也许这是一个IDE错误?
我使用的是 OpenJDK 14+36-1461,IDEA 2020.1。
以防万一,我针对 IDEA提交了错误报告。
我想知道这里是否有人使用跳过列表.它看起来与平衡二叉树具有大致相同的优点,但实现起来更简单.如果你有,你是自己编写的,还是使用预先编写的库(如果有的话,它的名字是什么)?
我们使用maven并拥有依赖于其他内部工件的工件.我正在迁移到java-9,并且打算首先将所有内容迁移到Java 9而不模块化代码(即在未命名的模块中).
我遇到的问题是我们依赖java.xml.bind,现在不包含在默认模块中.是否有一种"正确"的方式来表达对java.xml.bindMaven的依赖?
我尝试使用JavaHome的命令行:
netbeans-trunk-nightly-201803230002-javase-windows.exe --javahome "C:\Program Files\Java\jdk-10"
Run Code Online (Sandbox Code Playgroud)
它应该工作,但我收到一条消息:
指定位置C:\ Program Files\Java\jdk-10中没有JRE
谢谢!
似乎IntStream.iterate只是的轻量级订购版本IntStream.generate。是真的吗 如果没有,核心区别是什么?
作为 Java SE 12 的一部分,引入了switch表达式,并且从 Java SE 14 开始,它们已经标准化。它们与switch陈述有何不同?
java ×8
java-9 ×4
java-14 ×2
azul-zulu ×1
binary-tree ×1
forkjoinpool ×1
gradle ×1
install ×1
java-10 ×1
java-8 ×1
java-home ×1
java-module ×1
java-platform-module-system ×1
java-record ×1
java-stream ×1
javadoc ×1
jaxb ×1
maven ×1
module-info ×1
netbeans ×1
skip-lists ×1
version ×1
versioning ×1