草庐IT

kotlin - 伴生对象比普通对象有什么优势?

Kotlin代码如下:classFoo{companionobject{funa():Int=1}funb()=a()+1}可以简单地改成objectFooStatic{funa():Int=1}classFoo{funb()=FooStatic.a()}我知道伴生对象可以用作真正的java静态函数,但是使用伴生对象还有其他优点吗? 最佳答案 主要区别之一是成员的可见性。在伴随对象中,包含类的可见性就像成员是类的一部分一样-对于原始对象而言并非如此。下面的例子表明你不能使用“对象”来实现类的私有(private)静态内部。packa

android - UNRESOLVED_REFERENCE 未解析的引用 : isInitialized

我正在尝试使用Kotlin的检查lateinit属性状态的新功能,但是得到了这个编译时错误Unresolvedreference:isInitialized我已经用kotlin_version='1.2.0-beta-31'的kotlin版本配置了我的build.gradle文件(androidstudio版本为3.0)并且还更新了相同版本的kotlin插件。这是我的代码fragment,我正在使用isInitialized检查。还包含一个反射库compilegroup:'org.jetbrains.kotlin',name:'kotlin-reflect',version:'1.2.

android - UNRESOLVED_REFERENCE 未解析的引用 : isInitialized

我正在尝试使用Kotlin的检查lateinit属性状态的新功能,但是得到了这个编译时错误Unresolvedreference:isInitialized我已经用kotlin_version='1.2.0-beta-31'的kotlin版本配置了我的build.gradle文件(androidstudio版本为3.0)并且还更新了相同版本的kotlin插件。这是我的代码fragment,我正在使用isInitialized检查。还包含一个反射库compilegroup:'org.jetbrains.kotlin',name:'kotlin-reflect',version:'1.2.

ssl - 无需证书验证即可进行 httpS 连接的 kotlin 库(如 curl --insecure)

我需要抓取已过期/自签名证书的内部公司网站。没有人会为该主机配置有效证书,所以我必须使用不安全的连接。curl具有用于此目的的--insecure标志,Scalafinagle库具有.tlsWithoutValidation()模式。问题:是否有具有类似选项的Kotlin库?UPD:目前我使用的是Fuel找到了javish的解决方法here但仍在寻找更好的方法..funuseInsecureSSL(){//CreateatrustmanagerthatdoesnotvalidatecertificatechainsvaltrustAllCerts=arrayOf(object:X509

ssl - 无需证书验证即可进行 httpS 连接的 kotlin 库(如 curl --insecure)

我需要抓取已过期/自签名证书的内部公司网站。没有人会为该主机配置有效证书,所以我必须使用不安全的连接。curl具有用于此目的的--insecure标志,Scalafinagle库具有.tlsWithoutValidation()模式。问题:是否有具有类似选项的Kotlin库?UPD:目前我使用的是Fuel找到了javish的解决方法here但仍在寻找更好的方法..funuseInsecureSSL(){//CreateatrustmanagerthatdoesnotvalidatecertificatechainsvaltrustAllCerts=arrayOf(object:X509

kotlin - 在 Kotlin Set 接口(interface)中调用 add 方法时 Unresolved 引用错误

如果我使用Set接口(interface)引用并尝试调用add方法,则会收到Unresolved引用错误:funmain(args:Array){valset=HashSet()set.add(Integer(1))//OKvalseti:Set=HashSet()seti.add(Integer(2))//FAILING:Unresolvedreferencetoadd**}我不明白这种行为。JavaSet接口(interface)有一个add方法,我希望Kotlin接口(interface)是一个扩展版本,而不是更少的方法。PD1:我在IdeaIDE或使用gradle构建时遇到同样

kotlin - 在 Kotlin Set 接口(interface)中调用 add 方法时 Unresolved 引用错误

如果我使用Set接口(interface)引用并尝试调用add方法,则会收到Unresolved引用错误:funmain(args:Array){valset=HashSet()set.add(Integer(1))//OKvalseti:Set=HashSet()seti.add(Integer(2))//FAILING:Unresolvedreferencetoadd**}我不明白这种行为。JavaSet接口(interface)有一个add方法,我希望Kotlin接口(interface)是一个扩展版本,而不是更少的方法。PD1:我在IdeaIDE或使用gradle构建时遇到同样

gradle - 使用 gradle 设置 kotlin 项目

我是kotlin和gradle的新手,并尝试建立我的第一个项目:build.gradlebuildscript{ext.kotlin_version='1.0.1-1'repositories{mavenCentral()jcenter()}dependencies{classpath"org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"}}applyplugin:"kotlin"src\main\kotlin\main.ktpackagehellofunmain(args:Array){println("HelloWor

gradle - 使用 gradle 设置 kotlin 项目

我是kotlin和gradle的新手,并尝试建立我的第一个项目:build.gradlebuildscript{ext.kotlin_version='1.0.1-1'repositories{mavenCentral()jcenter()}dependencies{classpath"org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"}}applyplugin:"kotlin"src\main\kotlin\main.ktpackagehellofunmain(args:Array){println("HelloWor

kotlin - 带有重置的惰性变量

我想创建一个不为空的特定类型的变量,例如Foo。然后我希望对变量的所有访问都返回Foo,就像一个惰性委托(delegate)一样,但是,我也希望能够重置它。类似:varfoo:StringbyFoo(init:{"bar"})print(foo)//prints"bar"foo=null//orfoo.reset()print(foo)//prints"bar"我要解决的问题:我有一个适配器索引,当适配器内容更改时我需要重新创建它。所以在更改时我想清除索引,下次有人尝试访问它时,我想重新创建它。 最佳答案 如果目标是有一个惰性初始化