2014-09-29 84 views
0
**public void testCompareTo() { 
    System.out.println("compareTo"); 
    Patient p = null; 
    Patient instance = null; 
    int expResult = 0; 
    int result = instance.compareTo(p); 
    assertEquals(expResult, result); 
}** 

有没有办法在空对象中调用方法,或者我必须在这里执行异常吗?在空对象JAVA中调用非静态方法?

回答

3

不,您不能在空对象上调用非静态方法,因为这会导致NullPointerException

在致电instance.compareTo(p)之前,您必须验证instance不为空。

+1

其实任何引用,语义这是不正确的。你的意思是调用空对象上的任何方法总是抛出一个NullPointerException – ControlAltDel 2014-09-29 17:30:38

+0

有没有办法为变量“result”设置一个值?如果我不能调用compareTo并且不改变和'p '和'instance' – user3133474 2014-09-29 17:35:31

+1

@TJCrowder这很有趣。我从来没有试过通过空对象引用调用一个静态方法。然后,我试着不通过对象引用来调用静态方法,所以我从来没有尝试过它并不是一个惊喜。 – Eran 2014-09-29 17:35:36

0

null对象的定义是...什么也没有。您不能在空对象上调用实例级方法而不会导致NullPointerException

+0

*“您不能在空对象上调用任何内容而不会导致'NullPointerException' * *您可以知道:A * static *方法。 (奇怪但是真的。) – 2014-09-29 17:31:21

+1

你在技术上调用类的方法,而不是对象。 – 2014-09-29 17:31:52

+0

是的,相当真实。您正在使用变量/数据成员(例如,编译器会如何确定哪些类是相关的),但不是*对象*。 – 2014-09-29 17:36:28

0

NullPointerException异常是在这种情况下,如Java必然不能得到一个空的对象,这使得它明显抛出NullPointerException

相关问题