以下(逻辑上)是编译时错误:
public int myMethod(MyObject input) {
if (input == null) {
return null; // compiler says I cannot return null for primitive type
} else {
return 1;
}
}
到目前为止,一切都很好。我不明白的是,以下内容是允许的:
public int myMethod(MyObject input) {
return input == null ? null : 1;
}
为什么?认识到这对于编译器应该很简单,还是我在这里错过了一些关键点?
(当然,如果在三元运算符中,一个以“空分支”结尾,那么它是一个NPE,还有什么?:)
三元条件运算符的类型由其第二和第三操作数的类型确定。
如果是
input == null ? null : 1
类型是Integer
,可以同时分配null
和1
。
编译器允许您的方法返回,Integer
因为它可以自动拆箱为int
,因此适合int
返回类型myMethod
。
NullPointerException
编译器无法检测到您的特定代码可能抛出a的事实。
如果我有一个Kotlin函数 我想从Java调用,我必须这样做: 看起来很难看。为什么我不能像
请帮我检查数据库属性。 然后,sizeBinding有第一个元素null(用于宽度)和绑定表达式实例(用于高度绑定)。我可以使用Mode=twoway设置绑定,但是我想知道为什么如果Mode没有设置为twoway就不会创建绑定实例。我认为这是因为表达式需要比路径更复杂。但是,我尝试了,但是返回null作为绑定。我尝试了GetBinding*方法,但它们的行为与完全相同。 我谷歌搜索的唯一一个问题就
我想根据条件返回一个流的值。仅以下面的例子为例,我想将任何苹果映射到< code >食物。苹果公司: 如何在流中包含三元条件?
以下是presenter中调用的方法: 下面是我的测试方法: 在Super.UpdateViewModel(vm)的处理程序中,我调用“SharedPreferenceHandler.MinStance.AccessToken!!)” 在我的测试方法中有可能得到这一点吗?
我写一个函数,应该返回数组时,它是真和一个字符串时,假我第一次这样写:但是当myArry是空的,除了接收我得到一个空的arr,当我写,它工作,我不明白为什么? 下面我的代码:
我有一个spring boot应用程序,它有一个endpoint测试配置类和一个单元测试来测试我的http客户端。我正在尝试从应用程序中获取服务器地址和端口。位于我的src/测试中的属性。(所有类都在我的src/测试中。) 这是我的配置类代码: 我对我的中的值进行了注释。属性,然后创建一个方法,我用bean实例化该方法以返回我的服务器地址字符串。 然后,我在HttpClientTest类中使用该字