-
Kotlin errorAndroid 외 개발 2019. 12. 4. 11:20
Java 소스를 Kotlin 으로 변환 하면서 발생한 에러를 수정하면서 찾아본 내용을 정리하였습니다.
Example1. Incompatible types: Int and Byte
변경 전:
fun test(b:Byte): Int{ return when(b){ 0x01 -> 1 0x02 -> 2 0x03 -> 3 else -> 4 } }
변경 후:
fun test(b:Byte): Int{ return when(b){ 0x01.toByte() -> 1 0x02.toByte() -> 2 0x03.toByte() -> 3 else -> 4 } }
Example2. Call uses reflection API which is not found in compilation classpath. Make sure you have kotlin-reflect.jar in the classpath
변경 전:
AClass::class.simpleName
변경 후:
AClass::class.java.simpleName
Example3. Kotlin Singleton
변수 없는 경우
object Singleton
변수 있는 경우
class UsersDatabase : RoomDatabase() { companion object { @Volatile private var instance: UsersDatabase? = null fun getInstance(context: Context): UsersDatabase = instance ?: synchronized(this) { instance ?: buildDatabase(context).also { instance = it } } private fun buildDatabase(context: Context) = Room.databaseBuilder(context.applicationContext, UsersDatabase::class.java, "Sample.db") .build() } }
Example4. Smart cast to 'TYPE' is impossible, because 'xxx' is a mutable property that could have been changed by this time
변경 전
when(type){ 1-> set(type) else-> set(0) }
변경 후
type?.let{ when(type){ 1-> set(it) else-> set(0) } }
Example5. final static
변경 전:
final static int a = 1
변경 후
companion object { const val a = 1 }
Example6.
kotlin.jvm.KotlinReflectionNotSupportedError: Kotlin reflection implementation is not found at runtime. Make sure you have kotlin-reflect.jar
build.gradle 파일 dependencies에 아래 추가
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
'Android 외 개발' 카테고리의 다른 글