草庐IT

lateinit

全部标签

android-studio - 定义全局 android.widget var/val 时为 "lateinit"或 "by lazy"

定义全局android.widget变量时,例如TextView,是使用lateinit还是bylazy更可取?我最初认为使用bylazy会更好,因为它是不可变的,但我不完全确定。懒人示例:classMainActivity:AppCompatActivity(){valhelloWorldTextViewbylazy{findViewById(R.id.helloWorldTextView)asTextView}overridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)setCo

kotlin - 如何将 lateinit Kotlin 属性设置为 null

下面的类有一个非常独特的生命周期,这需要我暂时清空lateinit属性classSalesController:BaseController,SalesView{@InjectlateinitvarviewBinder:SalesController.ViewBinder@Injectlateinitvarrenderer:SalesRenderer@Injectlateinitvarpresenter:SalesPresenterlateinitprivatevarcomponent:SalesScreenComponentoverridevarstate=SalesScreen.S

kotlin - 如何将 lateinit Kotlin 属性设置为 null

下面的类有一个非常独特的生命周期,这需要我暂时清空lateinit属性classSalesController:BaseController,SalesView{@InjectlateinitvarviewBinder:SalesController.ViewBinder@Injectlateinitvarrenderer:SalesRenderer@Injectlateinitvarpresenter:SalesPresenterlateinitprivatevarcomponent:SalesScreenComponentoverridevarstate=SalesScreen.S

android - Kotlin:使用自定义 setter 时没有lateinit的解决方法?

在我的Activity中,我有一个不可为空的字段并且有一个自定义setter。我想在我的onCreate方法中初始化该字段,所以我将lateinit添加到我的变量声明中。但是,显然你不能这样做(目前):https://discuss.kotlinlang.org/t/lateinit-modifier-is-not-allowed-on-custom-setter/1999.这些是我可以看到的解决方法:以Java方式进行。使该字段可以为空,并将其初始化为空。我不想那样做。使用类型的“默认实例”初始化字段。这就是我目前所做的。但这对于某些类型来说太贵了。有人可以推荐一种更好的方法(不涉及

android - Kotlin:使用自定义 setter 时没有lateinit的解决方法?

在我的Activity中,我有一个不可为空的字段并且有一个自定义setter。我想在我的onCreate方法中初始化该字段,所以我将lateinit添加到我的变量声明中。但是,显然你不能这样做(目前):https://discuss.kotlinlang.org/t/lateinit-modifier-is-not-allowed-on-custom-setter/1999.这些是我可以看到的解决方法:以Java方式进行。使该字段可以为空,并将其初始化为空。我不想那样做。使用类型的“默认实例”初始化字段。这就是我目前所做的。但这对于某些类型来说太贵了。有人可以推荐一种更好的方法(不涉及

android - Kotlin - lateinit VS 任何? =空

在Kotlin中,似乎有两种方法可以在对象内声明一个变量,该变量可以为null并在对象创建后实例化。varmyObject:Any?=null或varlateinitmyObject:Any如果我们可以让var可以为空并稍后分配它,为什么需要lateinit关键字,我很困惑。每种方法的优缺点是什么?每种方法应该在什么情况下使用? 最佳答案 根据我目前在Kotlin中的知识,这是我对差异的看法。第一个:varmyObject1:Any?=null这里myObject1是一个可以为空的属性。这意味着您可以将null分配给它。第二个:la

android - Kotlin - lateinit VS 任何? =空

在Kotlin中,似乎有两种方法可以在对象内声明一个变量,该变量可以为null并在对象创建后实例化。varmyObject:Any?=null或varlateinitmyObject:Any如果我们可以让var可以为空并稍后分配它,为什么需要lateinit关键字,我很困惑。每种方法的优缺点是什么?每种方法应该在什么情况下使用? 最佳答案 根据我目前在Kotlin中的知识,这是我对差异的看法。第一个:varmyObject1:Any?=null这里myObject1是一个可以为空的属性。这意味着您可以将null分配给它。第二个:la

android - lateinit 属性尚未初始化

我有一个自定义的线性布局类,当我想创建这个类的实例时,我收到以下错误:lateinit属性尚未初始化我正在使用最新版本的butterknife库。以下是我的Kotlin类:classMenuItemView:LinearLayout{@BindView(R.id.menu_title_text_view_id)lateinitvarmenuTitleTextView:CTextBasicconstructor(ctx:Context):super(ctx){}init{valview=LayoutInflater.from(context).inflate(R.layout.menu_

android - lateinit 属性尚未初始化

我有一个自定义的线性布局类,当我想创建这个类的实例时,我收到以下错误:lateinit属性尚未初始化我正在使用最新版本的butterknife库。以下是我的Kotlin类:classMenuItemView:LinearLayout{@BindView(R.id.menu_title_text_view_id)lateinitvarmenuTitleTextView:CTextBasicconstructor(ctx:Context):super(ctx){}init{valview=LayoutInflater.from(context).inflate(R.layout.menu_

java - isInitialized - lateinit var 的支持字段此时不可访问

我正在尝试检查lateinit属性是否已初始化。在Kotlin1.2中,我们现在有了isInitialized方法。当我在声明了lateinit属性的类中这样做时,它会起作用。但是当我尝试从另一个类调用它时,我收到以下警告:Backingfieldof'lateinitvarfoo:Bar'isnotaccessibleatthispoint我的模型类(比如Person)是用Java编写的另外两个类(比如Test1和Test2)是用Kotlin编写的例子:classTest1{lateinitvarperson:Personfunmethod(){if(::person.isIniti