Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.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
Kotlin中的Java类对象_Java_Android_Kotlin - Fatal编程技术网

Kotlin中的Java类对象

Kotlin中的Java类对象,java,android,kotlin,Java,Android,Kotlin,我正在处理一个数据库,它需要用户注册和登录。当用户注册时,数据被存储到房间数据库中。 出于注册目的,使用Kotlin代码。但是我想在Kotlin代码中使用java类的对象。 因此,我的问题是,是否可以在Kotlin代码中初始化Java类的对象 例如: user.java package ... public class User { /* The credentials of a user. */ String userName, password, bID; /

我正在处理一个数据库,它需要用户注册和登录。当用户注册时,数据被存储到房间数据库中。 出于注册目的,使用Kotlin代码。但是我想在Kotlin代码中使用java类的对象。

因此,我的问题是,是否可以在Kotlin代码中初始化Java类的对象

例如:
user.java

package ...

public class User {
    /*   The credentials of a user. */
    String userName, password, bID;
    /* Last message */
    String lastMessage;

    public User(String userName, String password, String bID, String lastMessage) {
        this.userName = userName;
        this.password = password;
        this.bID = bID;
        this.lastMessage = lastMessage;
    }
    ....
}

**register.kt:**
package ...

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_register.*

class RegisterActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_register)

//        handler= DatabaseHelper(this)
            val handler= DatabaseHelper(this)


        User user = new user();
        btnLogRegister.setOnClickListener {
            onBackPressed()
        }
        reg_button.setOnClickListener{
            handler.insertUserData(reg_bluetooth_name.text.toString(),reg_username.text.toString(),reg_password.text.toString())
                Toast.makeText(this,"Values Inserted", Toast.LENGTH_LONG).show()

        }
    }


}
我想在寄存器.kt

更改中插入java类对象

User user = new User( ) 
//to this line
val user = User ( )

您必须在kotlin中使用数据类,如下所示

data class User (
  val userName : String = "",
  val password : String = "",
  val bID : String = "",
  val lastMessage : String = ""
)
如何使用它

reg_button.setOnClickListener{
            handler.insertUserData(User(reg_bluetooth_name.text.toString(),reg_username.text.toString(),reg_password.text.toString()))
                Toast.makeText(this,"Values Inserted", Toast.LENGTH_LONG).show()

        }

对于kotlin,请使用data class,要享受kotlin的更多功能,如检查可空性,请使用下面的类:

data class User (var userName : String?,var password : String?,var bID : String?,var lastMessage : String?
)
使用var可以同时获取setter和getter,而val只提供getter。请注意

`User (var userName : String?,var password : String?,var bID : String?,var lastMessage : String?)` 
是主构造函数,您可以创建更多

在“活动”中,可以按代码所示强制展开值或使用默认值

reg_button.setOnClickListener{
            handler.insertUserData(reg_bluetooth_name.text.toString()!,reg_username.text.toString()!,reg_password.text.toString()!)
                Toast.makeText(this,"Values Inserted", Toast.LENGTH_LONG).show()

        }