Kotlin和构造函数,初始化

赫夫拉夫

很抱歉提出一个非常新手的Kotlin问题,但是我正在努力理解与构造函数和初始化有关的一些知识。

我有这个类和构造函数:

class TestCaseBuilder constructor(
     caseTag: String = "Case",
     applType: Buy.ApplFor = Buy.ApplFor.PROOFFINANCE,
     komnr: String = "5035") {

     var caseTag: String       = caseTag
     var applType: Buy.ApplFor = applType  
     var komnr: String         = komnr             

我在这里尝试做的是在构造函数中使用默认值来提供三个可选参数。之所以在类主体中声明它们是因为我需要从主类访问它们。

现在,此代码有效。运行时没有错误。但是IntelliJ对变量(例如:caseTag)给出了以下注释:

Property is explicitly assigned to parameter caseTag, can be declared
directly in constructor.

我在搜索时发现的是使用init {}的示例,但是得到的结果包括两次初始化变量,一次在构造函数中,然后在init {}中。我会说哪个显然不正确?

在构造函数中拥有(或拥有)可选参数,然后从中创建类变量,有什么更好的选择?

帕维尔

您可以直接在主构造函数中声明属性。这意味着您可以在类主体中删除显式声明:

class TestCaseBuilder constructor(
     var caseTag: String = "Case",
     var applType: Buy.ApplFor = Buy.ApplFor.PROOFFINANCE,
     var komnr: String = "5035")

constructor如果您的主要构造函数没有任何注释或可见性修饰符(默认为public),也可以删除关键字

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Kotlin:在构造函数中初始化类属性

来自分类Dev

委托复制构造函数和const数据初始化

来自分类Java

初始化数组和构造函数不起作用

来自分类Dev

JavaFX FXML 构造函数和初始化方法

来自分类Java

Java:匿名类的初始化和构造函数

来自分类Dev

镖。子类和构造函数初始化器列表

来自分类Dev

初始化,复制构造函数和赋值

来自分类Dev

构造函数继承和直接成员初始化

来自分类Dev

列表初始化程序和可变参数构造函数

来自分类Dev

试图理解默认构造函数和成员初始化

来自分类Dev

记录构造函数和字段初始化错误

来自分类Dev

显式构造函数和嵌套的初始化列表

来自分类Dev

-Wreorder和构造函数初始化器列表

来自分类Dev

std :: initializer_list构造函数和“初始化初始化”问题

来自分类Java

声明初始化与构造函数初始化

来自分类Dev

零初始化忽略构造函数

来自分类Dev

更好的构造函数初始化设计

来自分类Dev

构造函数的分配初始化

来自分类Dev

初始化构造函数的值

来自分类Java

在构造函数中初始化日历

来自分类Dev

Dart构造函数初始化顺序

来自分类Dev

初始化程序与构造函数

来自分类Dev

部分构造函数初始化的性能

来自分类Dev

在构造函数中初始化流

来自分类Dev

构造函数不初始化变量

来自分类Dev

基本/默认构造函数与构造函数初始化列表

来自分类Dev

无法构造和初始化viewModel

来自分类Dev

C ++ 11统一初始化:初始化列表和多参数构造函数之间的歧义?

来自分类Dev

通过辅助构造函数在Kotlin数据类上初始化val属性