将数据显示从Java转换为Kotlin

我在Kotlin的开头,所以我想转换这部分代码:

Query query = reference.child("users"); query.addValueEventListener(new ValueEventListener() { public void onDataChange(DataSnapshot dataSnapshot) { Users users = null; for (DataSnapshot d: dataSnapshot.getChildren()) { users = d.getValue(Users.class); if (users.getEmail().equals(mail)) { photoUri = users.getPhotos(); nameSurname = users.getNome() + " " + users.getCognome(); break; } } if (photoUri != null) { Glide.with(MainActivity.this) .load(photoUri) .transform(new CircleTransform(MainActivity.this)) .into(profile); } else { Glide.with(MainActivity.this) .load(graphic) .transform(new CircleTransform(MainActivity.this)) .into(profile); } } public void onCancelled(DatabaseError databaseError) { } }); 

到Kotlin。 所以我做了这个代码:

 class DataReferenceService @Inject constructor(private var auth: FirebaseDatabase) : MainContract.DatabaseRepository,ValueEventListener { var mail: String? = null override fun getImageProfile(mail: String?) { this.mail = mail val query = auth.reference.child("users") query.addValueEventListener(this) } override fun onCancelled(p0: DatabaseError?) { } override fun onDataChange(data: DataSnapshot?) { var user: User? = null data?.children?.forEach { child -> getPhotos(child) } } fun getPhotos(child: DataSnapshot) { val user = child.getValue(User.class) // name expected, why ??? } } 

问题是在评论中指出,为什么它不转换? 还有其他方法可以做到吗? 我想使用takeIf{}但我不明白如何使用它。

谢谢

Java的User.class的等价物是Kotlin中的User::class.java

这里的文档。