java – kotlin错误的可空性推论没有任何泛型
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – kotlin错误的可空性推论没有任何泛型,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1858字,纯文字阅读大概需要3分钟。
内容图文
![java – kotlin错误的可空性推论没有任何泛型](/upload/InfoBanner/zyjiaocheng/822/d766748ba9094e34ac27a165441b5e1e.jpg)
在春天mvc(5.1.3)我试图做:
val url : String? = null
val matcher: ResultMatcher = MockMvcResultMatchers.forwardedUrl(url)
我得到第二行的编译错误.
来自intellij(kotlinc-jvm 1.3.11):
Error:(230, 56) Kotlin: Null can not be a value of a non-null type String
或者从gradle(kotlin 1.2.71):
Type mismatch: inferred type is String? but String was expected
spring方法的java源代码是:
/**
* Asserts the request was forwarded to the given URL.
* <p>This method accepts only exact matches.
* @param expectedUrl the exact URL expected
*/
public static ResultMatcher forwardedUrl(String expectedUrl) {
return result -> assertEquals("Forwarded URL", expectedUrl, result.getResponse().getForwardedUrl());
}
intellij显示javadoc:
org.springframework.test.web.servlet.result.MockMvcResultMatchers @NotNull
@Contract(pure = true)
public static org.springframework.test.web.servlet.ResultMatcher forwardedUrl(@Nullable String expectedUrl)
那么为什么编译器仍然需要非可空类型以及如何绕过该要求呢?
解决方法:
MockMvcResultMatchers.forwardedUrl的参数没有明确的可空性注释,因此默认为@NonNullApi,如package-info.java所示:
/**
* Contains built-in {@code ResultMatcher} and {@code ResultHandler} implementations.
* <p>Use {@link org.springframework.test.web.servlet.result.MockMvcResultMatchers}
* and {@link org.springframework.test.web.servlet.result.MockMvcResultHandlers}
* to access instances of those implementations.
*/
@NonNullApi
@NonNullFields
package org.springframework.test.web.servlet.result;
import org.springframework.lang.NonNullApi;
import org.springframework.lang.NonNullFields;
没有办法在Java中描述可空性,所以默认情况下传递String和String?到接受String的Java方法可行.但是,Kotlin编译器尊重不同版本的可空性注释(例如javax.annotation.*,Android的注释,Spring的注释),以允许Java代码向Kotlin调用者提供可空性信息.
如何绕过这个?你不能.你传递的是错误类型的参数
– 字符串和字符串?在Kotlin是不同的类型.
内容总结
以上是互联网集市为您收集整理的java – kotlin错误的可空性推论没有任何泛型全部内容,希望文章能够帮你解决java – kotlin错误的可空性推论没有任何泛型所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。