我想在我自己的类中调用抽象类的方法。抽象类是:
public abstract class Call {
public Connection getEarliestConnection() {
Connection earliest = null;
...
return earliest;
}
}
我想调用上面的方法,调用类是:
public class MyActivity extends Activity {
Connection c = new Connection();
private void getCallFailedString(Call cal)
{
c = cal.getEarliestConnection();
if (c == null) {
System.out.println("** no connection**");
} else {
System.out.println("** connection");
}
}
}
每当我尝试运行上面的类时,它会在行c = cal.getEarliestConnection()
上抛出NullPointerException。谁能告诉我如何解决这个问题?
答案 0 :(得分:15)
首先,Call
是一个抽象类,因此你无法直接实例化它。您必须创建一个子类,比如说MyCall extends Call
,它会覆盖Call中的任何抽象方法。
获取NullPointerException
意味着您作为[{1}}的参数传入的任何内容都尚未初始化。因此,在创建Call的子类之后,您必须实例化它,然后将其传递给您的方法,如下所示:
getCallFailedString()
无论你在哪里打电话class MyCall extends Call
{
//override any abstract methods here...
}
,都需要上面的内容,如:
getCallFailedString()
答案 1 :(得分:1)
在Call cal
传递到函数getCallFailedString
之前,看起来Call
为空。确保扩展getCallFailedString
并实例化扩展类并将其传递给{{1}}。
答案 2 :(得分:-2)
确保您的对象“cal”已初始化且不为null。此外,您将无法实例化Call对象(因为它是一个abstarct类)。相反,将类Call声明为接口并在您的类中实现其方法getEarliestConnection()。