Аннотации не преобразуются должным образом после изменения кода с Java на Kotlin - PullRequest
0 голосов
/ 14 февраля 2019

После преобразования некоторого Java-кода в Kotlin (для создания ReplacementSpan) возвращается ошибка, связанная с аннотацией.

from в конструкторе @IntRange(from = 0) возвращает ошибку:

IntRange не является классом аннотаций |Не удается найти параметр с таким именем: из

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 Ответ

0 голосов
/ 14 февраля 2019

Kotlin путает свой собственный класс IntRange с аннотацией IntRange Android SDK.

Создайте импорт, присвоив ему другое имя:

import android.support.annotation.IntRange as AndroidIntRange

и используйте его так:

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