找到 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 ... 阅读更多
435 次浏览
Java 9 的国际化增强功能包括默认启用 CLDR 语言环境数据。有四个不同的语言环境数据源,可以使用以下关键字标识:CLDR:Unicode 通用语言环境数据存储库 (CLDR) 项目提供的语言环境数据。HOST:当前用户对其底层操作系统的设置进行的自定义。根据操作系统,可以支持日期、时间、数字和货币等格式。SPI:已安装的 SPI 提供程序中实现的语言环境敏感服务。COMPAT (JRE):与 Java 9 之前的版本兼容的语言环境数据。JRE 仍然可以用作值,但已弃用,将来会删除。在 Java 中... 阅读更多
335 次浏览
JShell 是一个交互式 Java Shell 工具,使我们能够从 shell 执行 Java 代码并立即显示输出。JShell 是从命令行运行的 REPL(读取-评估-打印-循环)工具。我们只需在命令提示符下键入“jshell”即可启动 JShell,并使用“/exit”命令退出 jshell。对于小的代码片段,我们不需要在 JShell 中创建 main() 方法。我们还可以使用此工具实现主要的集合,例如列表、映射和集合。在下面的程序中,我们可以实现一个带有各种场景的 ArrayList。示例C:\Users\User\Desktop\Java 9 QNA>jshell | Welcome to 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) { // 返回取决于 name/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开始,我们可以通过引入四个核心接口:Publisher、Subscriber、Subscription、Processor,以及一个具体的实现Publisher接口的类:SubmissionPublisher来创建响应式流。每个接口扮演不同的角色,对应于响应式流的原则。我们可以使用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; ... 阅读更多