什么情况下,空引用null调用方法不报空指针异常?
来源:互联网 发布:数据波 编辑:程序博客网 时间:2024/04/28 18:40
先了解一下null:
null既不是对象也不是一种类型,它仅是一种特殊的值,你可以将其赋予任何引用类型,你也可以将null转化成任何类型,如:
String str =
null
;
// null can be assigned to String
Integer itr =
null
;
// you can assign null to Integer also
Double dbl =
null
;
// null can also be assigned to Double
String myStr = (String)
null
;
// null can be type cast to String
Integer myItr = (Integer)
null
;
// it can also be type casted to Integer
Double myDbl = (Double)
null
;
// yes it's possible, no error
进入正题:
下面的代码,通过为null的引用调用静态方法,且并未产生异常。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
test() 是一个静态方法,调用静态方法不需要创建实例对象。静态成员应该通过类型来访问,上面对test()方法通常应该写为Why.test();Java中可以通过对象引用表达式来访问一个静态成员,但这样通常会引起误解,因为这不是访问静态成员的常见形式。
- 1
- 2
- 3
当通过一个对象引用访问静态成员时,访问只与所声明的引用类型相关。即:
1. 所引用对象是否为null无关紧要,因为访问静态方法不需要实例对象。
2. 如果引用不为null,运行时对象类型也无关紧要,因为静态调用不会导致动态调用分派。而是与类相关。
对于第2点的示例。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
最后访问静态方法,建议使用标准写法来写,这样不容易引起误解,也便于走读维护。
原文地址:http://stackoverflow.com/questions/3293353/how-come-invoking-a-static-method-on-a-null-reference-doesnt-throw-nullpointe
阅读全文
0 0
- 什么情况下,空引用null调用方法不报空指针异常?
- null和“”调用方法都会报空指针吗
- ""与null区别 空指针异常机理
- HIVE空指针异常:hive NullPointerException null
- jbpm null jbpm流程里空记录 空指针异常
- Connection中的createStatement()方法调用时出现空指针异常
- 调用String对象的toString()方法时报空指针异常
- 打印空引用不会报空指针异常的原因
- null与空串的区别,什么是空指针,如何解决空指针异常
- NULL 空指针
- 空指针NULL
- controller调用service接口 空指针异常
- Android调用webservice抛出空指针异常
- Gallery在不可见情况下,onscroll造成的空指针异常
- Android下findViewById遇到空指针异常
- NULL指针与空指针
- NULL 空指针 野指针
- 解决URLConnection空指针异常的方法
- 【C#学习笔记】使用C#中的Dispatcher
- USB y-cable 简介
- 改基础服务的时候一定要确认它们的影响点。
- Ubuntu VirtualBox
- 隔行换色并且鼠标指向行变色的表格
- 什么情况下,空引用null调用方法不报空指针异常?
- UART
- 错误记录--更改tomcat端口号方法,Several ports (8005, 8080, 8009)
- 随时随地以任意方式编写 .NET 应用程序
- 使用新的robot跑gmapping例子不能动态避障原因分析
- [python]subprocess模块学习-call, checkall, check_output, Popen
- nltk.pos_tag函数
- 关于导入百度导航SDK报错以及解决方案
- Java引用