跳到主要内容

Java 特有语法糖

本页只介绍 Java SDK 独有的便捷写法:把已有 start() / stop() 包成 try-with-resources。它们不是新功能,旧 API 全部保留。


PnSScope(try-with-resources)

PnSService 已实现 AutoCloseable:退出 tryclose(),关掉会话。那不是本页的糖。

PnSScope 只管 start / stop

  • 进入作用域 start(),离开 stop()
  • 不替代 close(),会话还在。
  • 没有 started() 方法;是否已启动看 service().isStarted()
写法调用
标准 APIdevice.start(); … device.stop();
语法糖try (PnSScope scope = PnSScope.of(device)) { ... }
import com.darra.pns.service.PnSService;
import com.darra.pns.sugar.PnSScope;

try (PnSService device = new PnSService()) {
try (PnSScope scope = PnSScope.of(device)) {
// start() 已调
} // 内层 close() → stop()
} // 外层 close() 关会话

PnSScope.close() 幂等;stop() 失败不往外抛。of()start() 失败则不返回半开 scope,不进入业务块。

类别成员类型读写说明
构造PnSScope.of(service)PnSScope静态方法立即 start()
访问service()PnSService只读包装的会话,不转移所有权
启停close()方法stop(),不调 service.close()

何时用

  • 一段临时启停:进入 Start、离开 Stop,避免漏调。
  • 长时间保持运行:不要用 PnSScope,自己 start() / stop()
  • 只关会话:外层 try (PnSService …) 即可,不必套 PnSScope