找到 2637 篇文章 关于 Java
294 次浏览
JShell 是 Java 在 Java 9 中引入的第一个官方 REPL 应用程序。它是一个工具,有助于执行和评估简单的 Java 程序和小型逻辑,例如语句、简单程序、循环、表达式等。Java REPL 可以在命令行提示符中提供简单的编程环境。它读取输入,对其进行评估,并打印输出。在下面的示例中,我们可以使用 String 类的预定义方法实现字符串。示例jshell> String str = "{abcd}"; str ==> "{abcd}" jshell> str.substring(2, str.length() - 1) $7 ==> "bcd" jshell> String s1 = new String("abcd"); s1 ==> "abcd" jshell> String s2 ... 阅读更多
335 次浏览
JShell 是一个交互式 Java Shell 工具,使我们能够从 Shell 执行 Java 代码并立即显示输出。JShell 是从命令行运行的 REPL(读取-评估-打印-循环)工具。我们只需在命令提示符中键入“jshell”即可启动 JShell,并使用“/exit”命令退出 jshell。对于小型代码片段,我们不需要在 JShell 中创建 main() 方法。我们还可以使用此工具实现主要的集合,如列表、映射和集合。在下面的程序中,我们可以实现一个具有各种场景的 ArrayList。示例C:\Users\User\Desktop\Java 9 QNA>jshell | 欢迎使用 JShell ... 阅读更多
232 次浏览
在 Java 9 中,平台日志记录 API 可用于使用服务接口记录消息,这些消息的使用者可以访问这些消息。LoggerFinder 的实现已在 System ClassLoader 的帮助下使用 java.util.ServiceLoader API 加载。根据此实现,应用程序可以插入其自己的外部日志记录后端,无需配置 java.util.logging。我们可以将类名或模块传递给 LoggerFinder,以便它知道要返回哪个记录器。public class MyLoggerFinder extends LoggerFinder { @Override public Logger getLogger(String name, Module module) { // 返回取决于名称/模块的记录器 } }如果没有找到具体的实现,则... 阅读更多
275 次浏览
StackWalker API 在程序执行期间提供堆栈跟踪中的信息流。此 API 需要虚拟机捕获整个堆栈的快照,并返回用于过滤目的的元素数组。我们需要使用 walk() 方法跳过、删除和限制堆栈帧。我们还可以使用 filter() 方法按类过滤堆栈帧以获取第一个匹配帧和所有匹配帧。在下面的示例中,我们可以使用 StackWalker API 过滤堆栈帧。示例import java.lang.StackWalker.StackFrame; import java.util.*; import java.util.stream.*; public class StackWalkerFilterTest { ... 阅读更多
224 次浏览
Java 9 定义了一个 StackWalker API,它提供惰性和帧过滤。StackWalker 对象允许我们遍历和访问堆栈,并包含一个有用的方法:walk()。此方法为当前线程打开一个 StackFrame 流,然后使用该 StackFrame 流应用函数。我们需要获取 StackWalker 对象,然后使用 StackWalker.getInstance() 方法。在下面的示例中,我们可以打印不同的堆栈帧:所有堆栈帧、跳过一些堆栈帧和使用 StackWalker API 限制堆栈帧。示例import java.lang.StackWalker.StackFrame; import java.util.*; import java.util.stream.*; public class StackWalkerTest { public static void main(String args[]) { new StackWalkerTest().walk(); } private void walk() { ... 阅读更多
3K+ 次浏览
delayedExecutor() 方法已添加到 Java 9 中的 CompletableFuture 类中。CompletableFuture 定义了 delayedExecutor() 的两个重载方法:第一个方法从 CompletableFuture 对象用于在延迟后执行任务的默认 Executor 对象返回一个 Executor 对象,新的 Executor 对象可以执行任务,而第二个方法也返回一个 Executor 对象,但它是在延迟后将我们传递给此方法的 Executor 对象,新的 Executor 对象也可以执行任务。语法public static Executor delayedExecutor(long delay, TimeUnit unit, Executor executor) public static Executor delayedExecutor(long delay, TimeUnit unit)示例import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; ... 阅读更多
680 次浏览
从 Java 9 开始,我们可以通过引入四个核心接口来创建 Reactive Streams:Publisher、Subscriber、Subscription、Processor,以及一个具体的实现 Publisher 接口的类:SubmissionPublisher。每个接口扮演不同的角色,对应于 Reactive Streams 的原则。我们可以使用 SubmissionPublisher 类的 submit() 方法将提供的项目发布给每个订阅者。语法:public class SubmissionPublisher extends Object implements Flow.Publisher, AutoCloseable 在下面的示例中,我们可以实现 SubmissionPublisher 类 示例 import java.util.concurrent.Flow.Subscriber; import java.util.concurrent.Flow.Subscription; import java.util.concurrent.SubmissionPublisher; class MySubscriber implements Subscriber { private Subscription subscription; private String name; public MySubscriber(String name) { this.name = name; ... 阅读更多