我有一个简单的场景,在这个场景中我有来自多个国家的银行账户.有些信息是基本的,每个国家可能都有自己的特殊性.因此,我创建了一个名为DefaultBankAccount的开放类,我可以让特定于国家的类继承它们.然而,我不能实例化一个简单的DefaultBankAccount对象.

当我这样做时,构造函数中的属性为空:

@Document(collection = "bankAccount")
open class DefaultBankAccount(
    accountNumber: String,
    address: String,
    bankName: String,
    codeIban: String,
    codeSwift: String,
    country: String,
    holderName: String
) {
    companion object {
        @Transient
        val SEQUENCE_NAME = "payments_sequence"
    }

    @Id
    var id: Long = 0
    var createdAt: LocalDateTime = LocalDateTime.now()
    var updatedAt: LocalDateTime = LocalDateTime.now()
}

使用主构造函数,结果是:

enter image description here

因此,主构造函数上的任何属性都不会被初始化.但是,如果我实例化一个继承自DefaultBankAccount的类,似乎还不错:

@Document(collection = "bankAccount")
data class BrazilBankAccount(
    val accountNumber: String,
    val address: String,
    val bankName: String,
    val codeIban: String,
    val codeSwift: String,
    val country: String,
    val holderName: String,
    val bankCode: String,
    val branch: String,
    val digit: String,
    val type: String,
    val ispb: String,
    val docType: String,
    val docNumber: String
) : DefaultBankAccount(accountNumber, address, bankName, codeIban, codeSwift, country, holderName) {
    companion object {
        @Transient
        val SEQUENCE_NAME = "payments_sequence"
    }
}

enter image description here

My question is:如何实例化DefaultBankAccount对象及其所有属性?

推荐答案

构造函数中的属性为空

DefaultBankAccount的构造函数中没有声明任何属性,因为这些参数声明前面没有valvar关键字.在当前情况下,这些构造函数参数毫无用处,因为它们不会在类体中的任何地方使用.

在子类BrazilBankAccount中,构造函数参数前面都有val关键字,这使它们成为属性.

如果您也需要DefaultBankAccount个才能拥有这些属性,请在每个属性前面添加一个val关键字.请注意,子类的所有构造函数属性都需要override修饰符.

Mongodb相关问答推荐

使用mongosh将大型json文件插入到mongo集合中

MongoDB—基于数组中同一文档中的另一个字段更新字段

MongoDB对两个串联数组进行排序

仅当特定字段存在于 MongoDB 中时才更新它

MongoDB:通过嵌套数组中的最后一个元素值获取文档

如何在 MongoDB 中已经存在的 slug 中添加一个随机数?

mongoDB 过滤、排序和排名结果

如何过滤查找mongodb的结果

MongoDB - 分组并找到前 N 个

mongodump 是否锁定数据库?

如何在 MongoDB 中进行内部连接?

将 mongoose 字符串模式类型默认值设为空白并使该字段可选

如何在 mongodb 本机驱动程序中对 find() 进行字段 Select ?

Mongoose Schema vs Mongo Validator

请按语法排序 Mongoid Scope

MongoDB + Node JS + 基于角色的访问控制 (RBAC)

带有 Java 驱动程序的 MongoDB 聚合

MongoDB备份计划

Mongodb Compass 无法在 Ubuntu 18.10 中打开

全局初始化失败:BadValue Invalid or no user locale set.请确保正确设置 LANG 和/或 LC_* 环境变量