Tag: 构造函数

我怎样才能完成我的构造函数?

我有这个代码: override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.menu_search, menu) val searchItem = menu.findItem(R.id.action_search) val searchView = MenuItemCompat.getActionView(searchItem) as SearchView //*** setOnQueryTextFocusChangeListener *** searchView.setOnQueryTextFocusChangeListener(object : View.OnFocusChangeListener() { override fun onFocusChange(v: View, hasFocus: Boolean) { } }) searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener { override fun onQueryTextSubmit(query: String): Boolean { return false } override fun onQueryTextChange(searchQuery: String): Boolean { adapter!!.filter(searchQuery.toString().trim […]

JvmOverloads类的主要构造函数的注释

为什么它被禁止自动生成许多构造函数的Java可见的从类的主要构造函数与默认参数像这样? @JvmOverloads class Video(private val id: Long, val ownerId: Long, var title: String? = null, var imgLink: String? = null, var videoLink: String? = null, var description: String? = null, var created: Date? = null, var accessKey: String? = null, var duration: Long? = null, var views: Long? = null, var comments: Long? = null) […]

在kotlin中,如何使主构造函数的setter属性为private?

在kotlin中,如何使主构造函数的setter属性为private? class City(val id: String, var name: String, var description: String = "") { fun update(name: String, description: String? = "") { this.name = name this.description = description ?: this.description } } 我想让属性name的setter是私有的,而且它的getter是公开的,我该怎么办?

Kotlin构造函数:小学和中学

刚刚开始与Kotlin ,你可以有一个主要的建设者和次要的。 这个问题听起来很简单,但我找不到答案(我已阅读文档中的“构造函数”部分) – 为什么 ? 基本上,我试图理解主要和次要背后的想法是什么。 他们是如何使用的差异(似乎没有,为什么分离)?

向父级添加二级构造函数会意外地影响子类

我有一个(看似)奇怪的问题。 它可以用几行再现: open class Parent(val map: HashMap<String, Any>) { // constructor(unusedArgument: Int): this(hashMapOf()) } class Child: Parent(hashMapOf(Pair("key", "value"))) 只要我把Parent的二级构造函数注释掉了,它就会按预期编译和工作。 一旦我把它放回来,这个lint错误会弹出在Child的父构造函数被调用的地方: 错误:以下函数都不能用提供的参数调用: 在Parent中定义的公共构造函数Parent(map:HashMap) 公共构造函数Parent(unusedArgument:Int)在Parent中定义 如果其中任何一个是真的,错误消失: 我指定方差为HashMap<String, out Any> , 我的次要构造函数是空的, map被声明为Map而不是HashMap (我不这样做是因为我的目的,我需要它来实现Serializable )。 说实话,对我来说没有什么意义。 为什么只有在向父类添加非空的二级构造函数时才会发生? 它与什么有什么关系? 这些“修复”究竟是如何解决的? 谢谢。

类构造函数和成员变量(字段)

我试图用构造函数声明类,但似乎与该语法冲突并声明类成员。 任何建议如何一起去? class Person (aName:String) { var name : String get() = this.name set(myName) {this.name = myName} init { this.name = aName } }

Java:我如何通过反射获得构造函数的钩子/回调?

是否有可能通过反射获得构造函数的钩子/回调? 我的用例是使用表达式作为函数。 在像Kotlin这样的语言中,浮动表达式完全可以与扩展运算符结合使用,在某些情况下,它可以使语法变得非常简单。 这不能用代码实现完成,因为语法必须完全没有样板。

不可变(数据)类上的多个构造函数

我试图用多个构造函数实现一个不可变的数据类。 我觉得这样的事情应该是可能的: data class Color(val r: Int, val g: Int, val b: Int) { constructor(hex: String) { assert(Regex("#[a-fA-F0-6]{6}").matches(hex), { "$hex is not a hex color" } ) val r = hex.substring(1..2).toInt(16) val g = hex.substring(3..4).toInt(16) val b = hex.substring(5..6).toInt(16) this(r,g,b) } } 当然,事实并非如此:Kotlin预计主要构造函数的调用将在顶部声明: constructor(hex: String): this(r,g,b) { assert(Regex("#[a-fA-F0-6]{6}").matches(hex), { "$hex is not a hex color" […]

Kotlin:子构造函数如何使用其父构造函数?

例如,我们有这个家长: open class Parent(val id: Int, val name: String?) { constructor() : this(-1, null) } 和一个孩子一样,它必须同时具有父参数构造函数和空构造函数: class Child(id: Int, name: String?) : Parent(id, name) { constructor() : super() // syntax error } 子构造函数如何使用其父构造函数? 我知道我可以实现一个子构造函数传递与父类相同的值,但这不仅看起来多余,而且往往是我的孩子有其主要构造函数的额外参数,但不需要中间构造函数(构造函数与参数不包括所有额外的参数)。 下面是一个例子,以这种方式实现它,以防我不清楚: class Child(id: Int, name: String?) : Parent(id, name) { constructor() : this(-1, null) // no syntax error, but redundant }

房间不能选择一个构造函数,因为多个构造函数是合适的错误

我尝试在我的android kotlin项目中实现持久化库,但在编译时捕获这个错误: 错误:由于多个构造函数合适,房间无法选择构造函数。 尝试用@Ignore注释不需要的构造函数。 错误代码: @Entity data class Site( var name: String = "", var url: String = "", @PrimaryKey(autoGenerate = true) var id: Long = 0)