不可空的getter的可空字段

我试图用可为null的setter和可为空的字段来实现不可为空的getter。 字段parent可以为null,这意味着父项是this 。 如果父项不为空,则父项是parent值。 Getter不能为空,因为它返回this或parent Setter可以设置可为空的值,因为它可以删除当前父项。 我试过这个: @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = “parent_id”) var _parent: T? = null var parent: T get() = if (isParent) this as T else _parent!! set(value) { _parent = if (value == null) null else value.parent } 我不喜欢_parentvariables,但是它对setter没有帮助,因为它仍然不是parent: T ,所以解决方案不起作用。

如何把元素放到地图上并返回地图

考虑这个函数,我们试图向toMap(): MutableMap结果添加一个元素toMap(): MutableMap : fun add(key: String, value: Any): MutableMap { val map = asMap() map.put(key, value) return map } 这很简单,但我想知道是否可以简化为“单线”? 就像是: fun add(key: String, value: Any): MutableMap = asMap().magicPut(key, value) 编辑:显然我不够清楚: asMap()是一个用户定义的函数返回一个MutableMap与一些条目。 add方法应该添加到这个已经存在的地图。 EDIT2:基于评论我重命名为toMap() asMap() 。

JavaCodeStyleManager.getInstance(project).shortenClassReferences()不起作用

我不能使用JavaCodeStyleManager.getInstance(project).shortenClassReferences(); 使其添加导入语句。 在sourceText有完整的资格类名字符串像这样.. “@ com.google.gson.annotations.Expose \ n@com.google.gson.annotations.SerializedName(\”“+ jsonKey +”\“)” public void generateFiles(PsiDirectory directory, List classDataList) { final Project project = directory.getProject(); WriteCommandAction.runWriteCommandAction(directory.getProject(), (Runnable) () -> { PsiFileFactory factory = PsiFileFactory.getInstance(project); PsiDirectoryFactory directoryFactory = PsiDirectoryFactory.getInstance(directory.getProject()); JavaCodeStyleManager manager = JavaCodeStyleManager.getInstance(project); for (ClassModel classData : classDataList) { classData.packageName = directoryFactory.getQualifiedName(directory, true); String sourceText = generateFileContentForClass(classData); PsiFile classFile = […]

如何在Android中启用或禁用checkbox

我有我的quickalert对话框4checkbox…我想要的是,当我检查[启用] 1checkbox其他3checkbox必须得到禁用..我做他们点击,但没有禁用。 我不知道该怎么做。 这是我正在寻找的: checkmrn = (CheckBox) container.findViewById(R.id.MrnCheckBox); checkmrn.setText(“By Mrn”); checkmrn.setEnabled(false); checkdate = (CheckBox) container.findViewById(R.id.dateCheckBox); checkdate.setText(“By Date”); checkname = (CheckBox) container.findViewById(R.id.nameCheckBox); checkname.setText(“By Name”); checklocation = (CheckBox) container.findViewById(R.id.locationCheckBox); checklocation.setText(“By Location”); okButton = (Button) container.findViewById(R.id.okButton); okButton.setText(“Ok”); checkmrn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (((CheckBox) v).isChecked()) { Toast.makeText(mContext, “By Mrn”, Toast.LENGTH_SHORT).show(); } } }); checkdate.setOnClickListener(new […]

格式Kotlin字符串多次出现

我有一个字符串模板看起来像这样: val template = “Something %s something else %s. The first was %1$s, the second was %2$s” 与Java一起工作良好。 如何与Kotlin一起使用这个反复出现的字符串值? 看起来像%1$s是不可能的。 编译器警告: unresolved reference: s

使用默认参数键入Kotlin函数的签名

假设我有: fun addInvoker(adder: () -> Int = ::add): Int{ return adder() } fun add(num1:Int = 1, num2:Int = 1): Int{ return num1 + num2 } 我得到一个错误,因为:: add有两个参数,但addInvoker的签名要求它有零参数。 但是,如果我将其更改为: fun addInvoker(adder: (Int, Int) -> Int = ::add): Int{ return adder() } fun add(num1:Int = 1, num2:Int = 1): Int{ return num1 + num2 } 然后我不能调用加法器(),也就是用默认参数调用add。 那么,有什么办法可以使::添加默认参数到invokeAdder,但仍然调用添加与adder() […]

如何编写委托给另一个属性的委托?

我试图减少重复的代码在我的自定义属性获取/设置器只代理不同的层中相同的属性。 代码解释得更好: var emailText get() = presenter.emailText set(value) { presenter.emailText = value } 我的目标是这样的: var emailText by PropertyDelegate(presenter.emailText) 问题是,我找不到适当的语法来引用实际的属性,而不是它的值。 有一个简单的方法来做到这一点?

两个构造函数有什么不同?

这种types的构造函数有什么不同? class ColorsArray(context: Context) {} 和 class ColorsArray(var context: Context){}

将`var allByDefault:Int?`导致错误?

在kotlin的引用的属性和字段部分,写下下面的例子: var allByDefault:Int? //错误:显式初始化器需要,默认的getter和setter隐含 但是,我测试代码,没有编译和运行错误。 这是我的代码“ fun main(args:Array){ var allByDefault:Int? } 那么为什么这个文档写道: 错误:显式初始化器需要,默认的getter和setter隐含 我搜索谷歌的帮助,但还没有find任何结果,可以帮助我。 @toniedzwiedz的答案已经解决了这个问题。 我的错。 我错误的财产和变数。

Kotlin协同程序如何比RxKotlin更好?

我为什么要使用Kotlin协同程序? RxKotlin库似乎更为复杂。 Kotlin协程看起来不那么强大,而且比较麻烦。 我根据安德烈·布雷斯拉夫(JetBrains)的这个设计演讲,在协同工作的基础上: https : //www.youtube.com/watch?v = 4W3ruTWUhpw 幻灯片从谈话是可以访问这里: https : //www.slideshare.net/abreslav/jvmls-2016-coroutines-in-kotlin