代码之家  ›  专栏  ›  技术社区  ›  wbk727

将代码从Java更改为Kotlin后,注释未正确转换

  •  1
  • wbk727  · 技术社区  · 6 年前

    在将一些Java代码转换为Kotlin(以创建ReplacementSpan)之后,将返回一个与注释相关的错误。

    from @IntRange(from = 0) 构造函数返回错误:

    import android.graphics.Canvas
    import android.graphics.Paint
    import sun.swing.SwingUtilities2.drawRect
    import android.text.style.ReplacementSpan
    
    class HrSpan : ReplacementSpan() {
        override fun getSize(
            paint: Paint, text: CharSequence, @IntRange(from = 0) start: Int,
            @IntRange(from = 0) end: Int, fm: Paint.FontMetricsInt?
        ): Int {
            return 0
        }
    
        override fun draw(
            canvas: Canvas, text: CharSequence, @IntRange(from = 0) start: Int,
            @IntRange(from = 0) end: Int, x: Float, top: Int, y: Int, bottom: Int,
            paint: Paint
        ) {
            canvas.drawRect(x, top.toFloat(), y.toFloat(), (top + 8).toFloat(), paint)
        }
    }
    
    1 回复  |  直到 6 年前
        1
  •  4
  •   Willi Mentzel user670265    4 年前

    科特林混淆了自己 IntRange IntRange Android SDK的注释。

    对于Android支持库:

    import android.support.annotation.IntRange as AndroidIntRange
    

    对于AndroidX:

    import androidx.annotation.IntRange as AndroidIntRange
    

    fun foo(@AndroidIntRange(from = 0, to = 255) bar: Int) {
    }