首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android Studio使用Kotlin,修改代码后运行生效的解决方法

问题现象 前段时间升级 Android Studio 3.1.3+ 版本后,决定尝试使用 Kotlin 做 APP 开发看看。结果却发现,修改 String 资源后,“运行”,修改的内容没有生效。...5、 点击“OK”,关闭配置窗口,至此配置过程就结束了,修改代码之后“运行”生效的问题也就解决了。...Kotlin。...通过查询资料都说是Kotlin插件的版本跟同事的不一致造成的。赶紧看下,果然是比项目的Kotlin版本低很多。接下来就简单了,升级Kotlin插件就好。...以上这篇Android Studio使用Kotlin,修改代码后运行生效的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考。

4.1K30
您找到你想要的搜索结果了吗?
是的
没有找到

类型声明与安全(Void Safety)

Kotlin 中,不可能为的变量和可能为的变量被强行分开了(Java 有 @Nullable 和 @NonNull 注释,但只会提供警告)。那 Kotlin 为什么要这样设计呢?...通过错误上报,我发现是 mAudioPlayer.stop()这行指针错误了。mAudioPlayer 在init()被赋值,release()被释放,且为了防止内存泄漏被设置为 null。...再考虑到并发操作,即mAudioPlayer这个变量在任何使用的时候都可能为 null。 但外部已经有空条件判断了,且这是最新的版本才暴露的问题,为什么会这样呢?...Kotlin类型/可类型(NonNull/Nullable)声明 最开始我们提到:在 Kotlin 中,不可能为的变量和可能为的变量被强行分开了。具体是怎么分开的呢?...getMyCode() // ok } 生产环境建议使用双叹号!!,一般只用于测试环境。使用双叹号可以理解为放弃 Kotlin安全特性。 3.

98650

Kotlin Android】一个列表带你领略Kotlin简洁之风

作为一个曾经使用C、C++作为主要开发语言的人,在刚开始接触到Java从事Android开发,对于Java的简便易学、自动内存垃圾回收机制等等,简直就像发现了一个新大陆一样无比惊喜,大大提升了开发效率...来表明这个变量有可能为null,并赋值为null; 第四种方式,如果你只想声明变量,那么可以使用lateinit关键来表明该变量在后面才进行初始化(注:基础类变量不能指定为lateinit,并且lateinit...表示该参数可能为null。...在Java中经常出现让人头痛的问题就是,如果不加null判断,常常会出现指针异常,而在Kotlin中,必须对可能为的变量进行显式的声明,即 i)在变量后面加上“?”...来表示该变量可能为,如果变量真的为null,会跳过执行。 ii)如果想和Java一样,在变量为null,抛出指针异常,那么可以在变量后加上“!!”

1.8K10

java指针报错_指针异常是什么意思

Java 中任何对象都有可能为,当我们调用对象的方法就会抛出 NullPointerException 指针异常,这是一种非常常见的错误类型。...一方面我们无需再引入额外的 Jar 包,更重要的是 Spring Framework 代码本身就使用了这些注解,这样我们在调用它的 API 就能有效地处理值了。...使用了另一种方式,用户在定义变量就需要明确区分 可和不可类型。...= "text" // 错误:操作可类型必须使用安全操作符(?.)或强制忽略(!!.)。 println(b.length) val l: Int? = b?....length // 强制忽略,可能引发值异常 Kotlin 的特性之一是与 Java 的可互操作性,但 Kotlin 编译器无法知晓 Java 类型是否为,这就需要在 Java 代码中使用注解了,而

2.1K30

Kotlin】变量简介 ( 可类型 | lateinit | 初始化判定 | 非类型 | !! 与 ? 修饰符 | ?= ?. ?: 运算符 | 抽象属性变量)

= null 赋值 ; ③ 非变量 ( 引用类型 ) 使用 lateinit 修饰 ; ④ 抽象属性变量初始化 ; 2 . !! 与 ? 修饰符 : 仅对于 可类型 有效 , ?...age 变量 , 用户调用时不能为 , 故意赋值为 , 系统不允许这种操作 ; ④ lateinit 初始化情况 : 使用 lateinit 修饰的变量 , 但如果初始化 , 那么调用肯定报错..., 但是报的是未初始化错误 ; 初始化不是为 , 但不能调用 ; IV . lateinit 关键字 ---- lateinit 关键字 使用要求 : 只能修饰 非类型 , 并且是 引用数据类型...可变量 声明 : 声明可类型变量 , 再其变量类型后 , 添加 ?...Kotlin 变量初始化 : Kotlin 中的变量是必须进行初始化的 , 可变量 与 非变量要求不一样 , 但是原则上都必须初始化 ; ① 非变量 : 非变量可以使用 lateinit 修饰

2.4K20

Kotlin入门(8)值的判断与处理

上一篇文章介绍了如何对循环语句进行操作,末尾还演示了发现空串直接继续下一循环,只是在初始化字符串数组使用了“val poem2Array:Array<String?...既然大家都这么想,Android系统的研发工程师也例外,所以安卓的SDK已经提供了TextUtils.isEmpty(***)这个公共方法,专门用于校验某个字符串是否为值。...因为strCanNull可能为指针,若去调用一个指针对象的length方法,毫无疑问会扔出指针异常,所以Kotlin对可空串增加了编译检查,一旦发现某个可空串调用isEmpty/isBlank/isNotEmpty...表示不做非判断,强制执行后面的表达式,如果对象为空就会扔出异常 //所以只有在确保为非,才能使用!!...} } 总结一下,Kotlin引入了安全的概念,并在编译开展对象是否为的校验。

4.2K10

Kotlin学习笔记(一)-数据类型

注意是不可变属性不是静态属性 var是可变属性,可以初始化,可以多次赋值 在kotlin中不像java,基本数据类型可以用小写的boolean声明。这里必须用他的装箱类来定义。...Kotlin中继承是用冒号:来作为继承类或是实现接口 2处为次构造器,如果定义了主构造器那么次构造器需要继承主构造器 形参和实参 人这个类中定义的形参,帅哥定义的实参 init方法 当使用主构造器...如果这个方法返回本省就可能为怎么办呢?可以这样写: fun getName(): String? { return null } String?...总结 val notNull: String = null //错误,不能为 val nullable: String?...= null //正确,可以为 notNull.length //正确,不为的值可以直接使用 nullable.length //错误,可能为,不能直接获取长度 nullable!!.

72510

From Java To Kotlin安全、扩展、函数、Lambda很详细,这次终于懂了

这也就意味着,在 Kotlin 里,一切都是对象。 --- 安全(Null Safety ) 既然 Kotlin 中的一切都是对象,那么对象就有可能为。...= null // 编译通过 --- 并且由于 Kotlin 对可能为的变量类型做了强制区分,这就意味着,“可能为的变量”无法直接赋值给“不可为的变量”,反过来 “不可为的变量” 可以赋值给“可能为的变量...= null i = j // 编译器报错 j = i // 编译通过 这么设计的原因是,从集合逻辑上:可能为 包含 不可为 而如果我们实在有这样的需求,也不难实现,只要做个判断即可: var...$StaticInnerClass 持有外部类的引用。 Java 当中的嵌套类,默认情况下,没有 static关键字 ,它就是一个内部类,这样的内部类是会持有外部类的引用的。...前面定义的 add 函数,赋值给另一个函数变量,不能直接用的, 图片 需要使用::操作符 , 后跟要引用的函数名,获得函数引用后才可以去赋值。

1.2K80

Kotlin编译调校之WarningsAsErrors

处理这种警告,建议是去除inline关键字 如果执意inline使用@Suppress("NOTHING_TO_INLINE")压制编译器警告 INACCESSIBLE_TYPE(不可访问的类型)...T属于未检查的类型转换,可能在运行时抛出转换异常 推荐使用@Suppress("UNCHECKED_CAST")压制警告 推荐使用reified方式处理 //a better way inline...toIntOrNull()) } 上述的安全调用其实是显得多余,因为Kotlin内部会有Intrinsics做参数非的与判断 另外安全调用会增加if条件检查 建议主动移不必要的安全调用 建议压制警告...= null) { } } 和前面的例子一样,这种检查是多余的,因为Kotlin内部会有Intrinsics做参数非的与判断 建议主动移除无意义的比较 建议压制警告 UNNECESSARY_NOT_NULL_ASSERTION...toIntOrNull()) } 这种断言是多余的,因为Kotlin内部会有Intrinsics做参数非的与判断 建议主动移除不需要的非断言 建议压制警告 USELESS_IS_CHECK(没有用的实例类型检查

1.4K20

Kotlin 是如何避免指针问题的

在谈Kotlin的优势的时候,大家都会想到指针安全这一点,那么Kotlin又是如何避免这些问题的呢?下面从Kotlin的一些语法规则上给出介绍。...可类型 默认声明的变量是不能为 null 的,如果要使变量能为 null, 需要添加 ?操作符。...name 非断言 有时候,要将可的变量转成非的, 常见于Java, 我们知道变量是不可能为 null 的, 可以用非断言 !!。例如: val nullableString: String?...Int 原理 为了更好的理解Kotlin指针的原理。下面来看一下Kotlin是如何利用工具给开发者在编译前给出提示的。...Kotlin采用了一种不同的null处理方式。它对可类型和不可类型作了区分,可的类型后面会跟一个问号,比如Bar?,而Bar类型的变量则不可为

2.2K70

Kotlin中的可类型

Kotlin为了解决这个问题,引进了可类型,将运行时可能发生异常提前到编译期发现。 Kotlin中有可类型,这种类型表示取值可能为;而一般类型,则取值不能为。区别是类型后面有一个?...,结果也是一个可能为的类型。?.的返回类型需要注意,是一个可类型 ?: Java中的三目运算符?:的使用如下: int length(String s){ return s==null?...-1:s.length(); } Kotlin中也有?:运算符,使用情况类型, fun length(s:String?):Int{ return s?.length ?: -1 } ?...如果在某种情况下,明确能知道一个可类型不可能为,那么可以使用!!进行说明,比如: fun length(s:String):Int{ return s!!....所以说,Kotlin中虽然有了可类型,但也不是就没有空指针异常哦。

1.5K31

kotlin到底好在哪里?

(str.regionMatches(ignoreCase = true, thisOffset = 6, other = sub, otherOffset = 0, length = 5)) 而且使用命名参数的话可以遵循方法声明的时候的参数顺序传参...= 2.0f a = null b = null c = null d = null e = null f = null 非类型不可能为null,所以不用考虑指针的问题.只有可类型有可能为null...get(0); } 但是在我看来,可类型非类型的意义并不在帮我们做简化了判空处理的代码.更重要的一点是明确指出了哪些变量是可能为的,同时明确了为的时候的调用应该怎么处理....对于非类型,它永远不可能为,我们不需要考虑它的指针问题.而对于可类型,我们需要明确指定在它为的时候的调用抛出异常亦或进行执行.这样其实缩小了指针异常的范围,同时也减小了指针对程序稳定安全的破坏性...java相互调用.以前写的java代码不用任何处理就能直接在kotlin使用,而java也能无缝调用kotlin代码.

96770

Kotlin 是如何避免指针问题的

在谈Kotlin的优势的时候,大家都会想到指针安全这一点,那么Kotlin又是如何避免这些问题的呢?下面从Kotlin的一些语法规则上给出介绍。...可类型 默认声明的变量是不能为 null 的,如果要使变量能为 null, 需要添加 ?操作符。...name 非断言 有时候,要将可的变量转成非的, 常见于Java, 我们知道变量是不可能为 null 的, 可以用非断言 !!。例如: val nullableString: String?...Int #原理 为了更好的理解Kotlin指针的原理。下面来看一下Kotlin是如何利用工具给开发者在编译前给出提示的。...Kotlin采用了一种不同的null处理方式。它对可类型和不可类型作了区分,可的类型后面会跟一个问号,比如Bar?,而Bar类型的变量则不可为

1.6K70

Java vs Kotlin

如果要在浏览器上运行 Java程序,则需要使用Java小程序,建议将其作为插件嵌入。因此,Java通常用于独立应用程序或后端开发。...在Kotlin中,我们不能为变量或返回值分配值,如果我们真的想分配,则可以使用特殊语法声明变量,而在Java中,我们可以分配值,但是当我们尝试访问指向值的对象引发异常。...因此,我们可以在项目中同时使用Java和Kotlin这两个类,并且可以毫无问题地进行编译。编译后,我们无法找到用Java或Kotlin编写的类。...我认为,即使Java与Kotlin相比,优势不大,我们仍可以继续使用Kotlin进行Android应用程序开发,而无需担心编译时间。 ---- SOURCE ---- 版权属于:。。。...源 本文链接:https://www.findmyfun.cn/java-vs-kotlin.html 转载须注明出处及本声明。

58220

前往kotlin的路上

写在前面的絮叨 我是一个安卓程序员,前两天谷歌推荐用kotlin来作为开发Android项目的首选语言,所以我也尝试着用一个陌生的语言来试一试。...这篇文章写那些基础的语法啥的,主要是直接记录一下在项目直接用kotlin会是怎么样的,可能不全,但我会慢慢的补充进来。欢迎大家一起来补充干货。...= null //可能为的直接在变量类型后加问号即可 定义常量 val helloWorld: HelloWorld = HelloWorld()//定义常量要用关键字val 定义可被继承的类 open...: "的") 实现匿名内部类,例如: OnClickListener(这里演示lambda表达式方式) interface OnClickListener { fun onClick (view...:前要加空格,而用来表示变量类型则不加 命名规范参考java

45610

第3章 Kotlin类型与类型系统第3章 Kotlin类型与类型系统

Kotlin系统类型分为可类型和不可类型。Kotlin中引入了可类型,把有可能为null的值单独用可类型来表示。这样就在可引用与不可引用之间划分出来一条明确的显式的“界线”。...Kotlin自然也例外。 在 Java 8中,我们可以使用 Optional 类型来表达可的类型。...Kotlin正如很多现代编程语言一样——是安全的。因为我们需要通过一个可类型符号 T? 来明确地指定一个对象类型 T 是否能为。...如果要转换的类型与指定的类型兼容,转换就会成功进行;如果类型兼容,使用as?运算符就会返回值null。...本章小结 Kotlin通过引入可类型,在编译就大量“清扫了”指针异常。同时,Kotlin中还引入了安全调用符(?.) 以及Elvis操作符( ?: ) , 使得我们的代码写起来更加简洁。

2.1K20
领券