小编典典

抛出空指针异常

java

我正在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
。在此类中,有以下方法:

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行上抛出了一个错误。


阅读 230

收藏
2020-11-30

共1个答案

小编典典

显然,getConnections()此处返回null,而您无法获得null对象的大小。

解决方法如下:

if (l == null || l.size() == 0) 
{
    return null;
}

因此,如果由于某些未知原因而没有Connection-List或列表为空,null将返回该列表。使用运算符||的作用与

if (l == null)
{
    return null;
}
else if ( l.size() == 0)
{
    return null;
}
2020-11-30