2016-02-27 31 views
5

Kotlinでこのようなことを反映させる方法はありますか? inline fun <reified T : kotlin.Enum<T>> safeValueOf(type: kotlin.String?): T? にT行きKotlinのEnum.valueOf

Typeパラメータ満たさない:

inline fun <reified T : kotlin.Enum<T>> safeValueOf(type: String?): T? { 
    return java.lang.Enum.valueOf(T::class.java, type) 
} 

以下の例では、原因には、コンパイルされない推論タイプTestEnum?kotlin.Enum<TestEnum?>

enum class TestEnum 

fun main() { 
    val value: TestEnum? = safeValueOf("test") 
} 
のサブタイプではありません
+0

明示的に型パラメータ値を指定した場合、あなたの機能が動作します: 'ヴァルvalue = safeValueOf ( "test") ' – yole

+0

[' valueOf']のKotlin実装(https://kotlinlang.org/docs/reference/enum-classes.html#working-with-enum-constants)を使用するだけでは、 ? – soon

+0

@yoleありがとうございました。これを答えとして投稿してもよろしいですか? – AndroidEx

答えて

6

関数は、型パラメータ値を明示的に指定すると機能します。

val value = safeValueOf<TestEnum>("test") 

元のコードも同様に動作するようになっているが、型推論の実装にバグのために動作しません:https://youtrack.jetbrains.com/issue/KT-11218