Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 有什么方法可以避免!!科特林密码?_Android_Kotlin - Fatal编程技术网

Android 有什么方法可以避免!!科特林密码?

Android 有什么方法可以避免!!科特林密码?,android,kotlin,Android,Kotlin,我正在复习一段使用Lottie的代码 这是密码 class ProgressToProgress(context: Context) : LottieIconTransition( LottieCompositionFactory.fromRawResSync( context, R.raw.downloadprogress).value!!) 在哪里 @Nullable public V getValue() { return value;} 这个getValue()方法来自L

我正在复习一段使用Lottie的代码 这是密码

class ProgressToProgress(context: Context) : LottieIconTransition(
LottieCompositionFactory.fromRawResSync(
    context, R.raw.downloadprogress).value!!)
在哪里

  @Nullable public V getValue() {
return value;}
这个
getValue()
方法来自Lottie库,所以我无法控制它。 我不喜欢的是有!!在上面,有趣的是,
LottieIconTransition
的构造函数看起来是这样的,它有它的默认参数constructor param

类LottieIconTransition(私有val lottieComposition:lottieComposition=lottieComposition())


我想知道什么是最好的做法,以避免有!!在代码中?

这就是我所说的使用工厂方法的意思

class ProgressToProgress {

    constructor() : super()
    constructor(res: LottieResult<LottieComposition>) : super(res)

    companion object {
        @JvmStatic
        fun create(context: Context): ProgressToProgress {
            val res = LottieCompositionFactory.fromRawResSync(
                    context, R.raw.downloadprogress).value
            return if (res == null) {
                ProgressToProgress()
            } else {
                ProgressToProgress(res)
            }
        }
    }
}
class ProgressToProgress{
构造函数():super()
构造函数(res:LottieResult):超级(res)
伴星{
@JvmStatic
乐趣创建(上下文:上下文):ProgressToProgress{
val res=LottieCompositionFactory.fromRawResSync(
上下文,R.raw.downloadprogress).value
返回if(res==null){
ProgressToProgress()
}否则{
进展进展(res)
}
}
}
}
但是,这很麻烦,您可能希望自己指定默认值,即:

class ProgressToProgress(context: Context) : LottieIconTransition(
        LottieCompositionFactory.fromRawResSync(
            context, R.raw.downloadprogress).value ?: <respecify super default parameter value>)
class ProgressToProgress(上下文:context):lottieintransition(
LottieCompositionFactory.fromRawResSync(
上下文,R.raw.downloadprogress)。值?:)

这就是我所说的使用工厂方法的意思

class ProgressToProgress {

    constructor() : super()
    constructor(res: LottieResult<LottieComposition>) : super(res)

    companion object {
        @JvmStatic
        fun create(context: Context): ProgressToProgress {
            val res = LottieCompositionFactory.fromRawResSync(
                    context, R.raw.downloadprogress).value
            return if (res == null) {
                ProgressToProgress()
            } else {
                ProgressToProgress(res)
            }
        }
    }
}
class ProgressToProgress{
构造函数():super()
构造函数(res:LottieResult):超级(res)
伴星{
@JvmStatic
乐趣创建(上下文:上下文):ProgressToProgress{
val res=LottieCompositionFactory.fromRawResSync(
上下文,R.raw.downloadprogress).value
返回if(res==null){
ProgressToProgress()
}否则{
进展进展(res)
}
}
}
}
但是,这很麻烦,您可能希望自己指定默认值,即:

class ProgressToProgress(context: Context) : LottieIconTransition(
        LottieCompositionFactory.fromRawResSync(
            context, R.raw.downloadprogress).value ?: <respecify super default parameter value>)
class ProgressToProgress(上下文:context):lottieintransition(
LottieCompositionFactory.fromRawResSync(
上下文,R.raw.downloadprogress)。值?:)

在这种情况下,空值代表什么?您可以抛出更具体的内容,例如
value?:error(“加载转换失败”)
。视图可以为null,但可以看到构造函数lottieintransition具有默认值,我想知道传递的参数是否为null,它会崩溃还是构造函数会采用默认值?否,它会崩溃。如果要使用默认值,请执行
.value?:
。因此,在构造函数中使用现有逻辑的默认值没有意义,是吗?但是,如果我只执行null断言,如果为null,我将不会将其传递给构造函数,因为构造函数具有默认值。这个构造函数也被其他人使用,我现在不想做更改。
(null断言)将引发异常。我不会导致“没有值被传递,允许使用默认构造函数值”。在使用默认值为参数指定参数时,默认值将永远不会被使用。在这种情况下,空值代表什么?您可以抛出更具体的内容,例如
value?:error(“加载转换失败”)
。视图可以为null,但可以看到构造函数lottieintransition具有默认值,我想知道传递的参数是否为null,它会崩溃还是构造函数会采用默认值?否,它会崩溃。如果要使用默认值,请执行
.value?:
。因此,在构造函数中使用现有逻辑的默认值没有意义,是吗?但是,如果我只执行null断言,如果为null,我将不会将其传递给构造函数,因为构造函数具有默认值。这个构造函数也被其他人使用,我现在不想做更改。
(null断言)将引发异常。我不会导致“没有值被传递,允许使用默认构造函数值”。在使用默认值为参数指定参数的瞬间,将永远不会使用默认值。