【问题标题】:How do I pass data from a variable into a constructor using the body of the variable?如何使用变量的主体将数据从变量传递到构造函数?
【发布时间】:2019-10-26 18:56:00
【问题描述】:

我正在尝试使用我创建的变量将数据分配给我的班级。我想将该变量用作成员资格类的实例。每次我传递任何值时都会出错。

错误:没有为参数“_number”传递值

var member1 = membership()

错误:未解决的引用:_number

member1._number = 1

我尝试将任何内容传递给所有属性。

我尝试在没有任何构造函数的情况下创建类,但仍然会出错。我的目标是创建一个变量列表。

class membership(_number:Int, _name:String, _address:String, _zip:String, _phone:String, _memberSince:String, _memberType:Char)
      {
        var number: Int = _number;
        var name: String = _name;
        var address: String = _address;
        var zip: String = _zip;
        var phone: String = _phone;
        var memberSince: String = _memberSince;
        var memberType: Char = _memberType;

    }

fun main(args: Array<String>) {



    var member1 = membership()
member1._number = 1
member1._name = "George Jetson";
member1._address ="123 Main St.";
member1._zip = "99207";
member1._memberSince = "12/01/1997";
member1._memberType = 'L';
}

【问题讨论】:

    标签: kotlin primary-constructor


    【解决方案1】:

    您已使用需要 7 个参数的主构造函数声明了类 membership。因此,您需要在实例化此类时为这些参数提供值:

    var member1 = membership(
       _number = 1,
       _name = "George Jetson",
       _address ="123 Main St.",
       _zip = "99207",
       _memberSince = "12/01/1997",
       _memberType = 'L'
    )
    

    如果你想先创建一个类的实例,然后一个一个地初始化它的属性,你需要它有一个无参数的构造函数:

    class membership() { 
    

    但是,您必须将其所有属性设置为可空或 lateinit,因为现在您无法在构造时提供它们的初始值:

    class membership() {
       var number: Int? = null
       var name: String? = null
       var address: String? = null
       // etc
    }
    

    这样您就可以在问题中根据需要初始化它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-04
      • 2020-01-16
      • 2017-09-28
      • 1970-01-01
      • 1970-01-01
      • 2020-06-11
      相关资源
      最近更新 更多