我正在android中做一个应用程序,因此我需要访问com.android.internal.telephony API。现在,我可以访问这些API了,但问题是,无论我getEarliestConnection()在自己的类中调用Class Call.java方法的什么地方,都会抛出NullPointerException。您可以在http://hi- android.info/src/com/android/internal/telephony/Call.java.html中找到Call.java 。在此类中,有以下方法:
getEarliestConnection()
NullPointerException
1. public Connection 2. getEarliestConnection() { 3. List l; 4. long time = Long.MAX_VALUE; 5. Connection c; 6. Connection earliest = null; 7. 8. l = getConnections(); 9. 10. if (l.size() == 0) { 11. return null; 12. } for (int i = 0, s = l.size() ; i < s ; i++) { c = (Connection) l.get(i); long t; t = c.getCreateTime(); if (t < time) { earliest = c; time = t; } } return earliest; }
我想在我的课堂上调用此方法。Call.java类是一个抽象类,我创建了Call类的子类,并调用了上述方法,如下所示:
Call myCall = new MyCall(); Connection myConn = new MyConn(); myConn = myCall.getEarliestConnection();
但是它NullPointerException在上面的方法的第10行和上面的代码的第3行上抛出了一个错误。
显然,getConnections()此处返回null,而您无法获得null对象的大小。
getConnections()
解决方法如下:
if (l == null || l.size() == 0) { return null; }
因此,如果由于某些未知原因而没有Connection-List或列表为空,null将返回该列表。使用运算符||的作用与
null
||
if (l == null) { return null; } else if ( l.size() == 0) { return null; }