You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中实例化带有internal构造函数的Duration类

如何实例化Kotlin标准库的Duration类?

Duration的构造函数被标记为internal,属于库内部使用的接口,对外不允许直接调用,得用Kotlin官方提供的API来创建实例,常用方式有以下几种:

1. 数字+时间单位扩展属性

直接给数字添加时间单位后缀就能快速创建对应时长的Duration,需要先导入对应的单位扩展:

import kotlin.time.Duration
import kotlin.time.Duration.Companion.milliseconds
import kotlin.time.Duration.Companion.seconds
import kotlin.time.Duration.Companion.minutes

class MyGLRenderer : GLSurfaceView.Renderer {
    override fun onSurfaceCreated(unused: GL10, config: EGLConfig) {
        // 创建10毫秒的Duration
        val tp0 = 10.milliseconds
        // 创建10秒的Duration
        val tp1 = 10.seconds
        // 创建5分钟的Duration
        val tp2 = 5.minutes
    }
    override fun onDrawFrame(unused: GL10) {}
    override fun onSurfaceChanged(unused: GL10, width: Int, height: Int) {}
}

2. Duration伴生对象方法

通过Duration.Companion提供的静态方法创建,支持指定具体数值和单位:

import kotlin.time.Duration
import kotlin.time.DurationUnit

class MyGLRenderer : GLSurfaceView.Renderer {
    override fun onSurfaceCreated(unused: GL10, config: EGLConfig) {
        // 创建10毫秒的Duration
        val tp0 = Duration.ofMillis(10L)
        // 创建10秒的Duration
        val tp1 = Duration.seconds(10)
        // 自定义单位创建,比如10个时间单位(这里指定为秒)
        val tp2 = Duration.of(10, DurationUnit.SECONDS)
    }
    override fun onDrawFrame(unused: GL10) {}
    override fun onSurfaceChanged(unused: GL10, width: Int, height: Int) {}
}

3. 数值转Duration扩展函数

如果已有Long类型的时间值(比如毫秒数),可以用toDuration()扩展函数转换:

import kotlin.time.Duration
import kotlin.time.DurationUnit

class MyGLRenderer : GLSurfaceView.Renderer {
    override fun onSurfaceCreated(unused: GL10, config: EGLConfig) {
        val millisValue = 10L
        val tp0 = millisValue.toDuration(DurationUnit.MILLISECONDS)
    }
    override fun onDrawFrame(unused: GL10) {}
    override fun onSurfaceChanged(unused: GL10, width: Int, height: Int) {}
}

内容的提问来源于stack exchange,提问作者beginner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:52:13