如何将Java中的方法reference(::)替换为普通的构造函数调用?

时间:2018-12-24 07:11:27

标签: android kotlin rx-android

我以前在Java中有使用autovalue的模型类。现在,它已转换为Kotlin数据类。

模型类->

public static SampleClass create(
@NonNull final SamplePost post,
@NonNull final List<SampleComment> comments) {
return new AutoValue_SampleClass(post, comments);
}

呼叫类->

return Observable.zip(...

                    SampleClass::create);
          }

新数据类->

data class SampleClass(val post: DiscussionPost,
                       val comments: List<SampleComment>) : Parcelable

现在如何为数据类调用它?

2 个答案:

答案 0 :(得分:5)

U可以使用SampleClass::new来调用构造函数。

答案 1 :(得分:1)

如果我理解正确,则不需要构造函数调用,但需要构造函数引用。 is ::SampleClass的语法。但这可能不会触发SAM转换,在这种情况下,您将需要

 Observable.zip(...,
                { post, comments -> SampleClass(post, comments) })

编辑:以上假设zip是从Kotlin调用的,如果要从Java调用,请参阅@ebasha的回答。