Java 自动关闭度量包装器

Java 自动关闭度量包装器,java,Java,对于封装代码块并生成时间度量的类,使用AutoClosable在语义上是否正确?据我所知,这里没有资源,这是根据 使用lambdas在这里不是一个选项还有一些原因。无论AutoCloseable接口和try with resource模式是否用于此目的,我想这是它的一个可能用途。在这种情况下,定义一个侦听器接口并添加诸如metricStarted()metricStopped()之类的API将更合适。您所展示的是“锁定”到单个API。 class Metric implements AutoCl

对于封装代码块并生成时间度量的类,使用AutoClosable在语义上是否正确?据我所知,这里没有资源,这是根据


使用lambdas在这里不是一个选项还有一些原因。

无论AutoCloseable接口和try with resource模式是否用于此目的,我想这是它的一个可能用途。在这种情况下,定义一个侦听器接口并添加诸如metricStarted()metricStopped()之类的API将更合适。您所展示的是“锁定”到单个API。
class Metric implements AutoCloseable {
  private final Logger logger;
  private int startTime;
  public Metric(Logger logger) {
    this.logger = logger;
  }

  static Metric createStarted(Logger logger) {
     Metric metric = new Metric();
     metric.startTimer();
     return metric;
  }

  public startTimer() {
     this.startTime = System.milliseconds()
  }

  @Override
  public close() {
     logger.debug(System.milliseconds() - startTime);
  }
}

class Client {
public static void main(String... args) {
   try (Metric metric = Metric.createStarted()) {
      // do stuff
   }
}