当前位置: 首页 > 知识库问答 >
问题:

检查 if 语句中的 null 对象引用以及其他对象的方法 [重复]

尉迟子民
2023-03-14

我不相信为什么下面的陈述是有效的并且不会引发异常。

 ArrayList <String> some_list = null;

 if (some_list != null && some_list.size() > 0) {
   // do something...not important if I get here or not.
 }

somelist是空的,首先检查if()是有效的,但是如何获取空引用的大小呢?这不违法吗?

还是它是这样工作的:

 if (codition1 && condition2) {
 }

仅当条件1为真时,检查条件2?

因为我不相信,虽然我通过编写测试代码来确认。我总是喜欢下面:

if (some_list != null) {
  if (some_list.size() > 0) {
  }
} 

请帮助我理解逻辑

共有1个答案

汪天宇
2023-03-14

<代码>

对于< code>||来说也是如此,如果左边的表达式为真,它就不会执行右边的表达式。

<代码>

if ((some_list != null) & (some_list.size() > 0)) { 

那它就会像你问的那样失败。

 类似资料:
  • 问题内容: 他(@Mack)使用T-SQL和DMV完成了类似的回答。 如果可能的话,这可能吗? 我会将其发布为评论,但是我还没有足够的声誉… 问题答案: 您可以但不使用DMV,但需要一个相关的动态管理 功能 (DMF) 这是代码: 这是指向DMV和DMF的MSDN页面的链接。

  • 我有一个问题,我在测试中也找不到答案。方法pos和neg对我不起作用。 假设我们有一个简单的类: 现在,我想重写magic方法,它在我做语句时被调用: 如果是c: 但我不知道是哪个?请给我一些建议。

  • 如何迭代对象及其子对象的属性?我在中使用了,但无法获取歌曲信息:/

  • Navicat 还能让你管理其他 SQLite 对象:索引和触发器。在主窗口的主工具栏点击相应的按钮来打开对象列表。

  • Navicat 还能让你管理其他 SQL Server 对象:索引、同义词、触发器、备份设备、链接服务器、服务器触发器、程序集、数据库触发器、分区函数和分区方案。在主窗口中,点击 “其他”,然后选择一个对象来打开对象列表。

  • Navicat 还能让你管理其他 PostgreSQL 对象:聚合、转换、域、索引、运算符、运算符类别、序列、触发器、表空间、编制和语言。在主窗口中,点击 “其他”,然后选择一个对象来打开对象列表。