Как заменить ссылку на метод (: :) в Java обычным вызовом конструктора? - PullRequest
0 голосов
/ 24 декабря 2018

Ранее у меня был класс модели в 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 голосов
/ 24 декабря 2018

U может использовать SampleClass::new для вызова конструктора.

0 голосов
/ 24 декабря 2018

Если я правильно понимаю, вам нужен не вызов конструктора, а ссылка на конструктор.Синтаксис для него : ::SampleClass.Но это может не вызывать преобразование SAM, в этом случае вам понадобится

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

РЕДАКТИРОВАТЬ: Выше предполагается, что zip вызывается из Kotlin, если вы хотите вызвать его из Java, см. @ Ebasha'sответить.

...