Android - 类的空构造函数也会出错

时间:2013-05-06 05:43:13

标签: java android inheritance

我从另一个类继承了一个类,首先我没有给出空构造函数。但是在写完一个空构造函数之后,我的应用程序仍然会给出相同的错误。

错误:

java.lang.InstantiationException: can't instantiate class com.example.test3.VideoRecorder; no empty constructor

这是我正在使用的普通构造函数,这很好用:

public Videoplanner(Context ctxt, String logTag,Application app) throws NoSuchAlgorithmException 
{
    super(ctxt, logTag);
    TelephonyManager telephonyManager = (TelephonyManager) ctxt.getSystemService(Context.TELEPHONY_SERVICE);
    MessageDigest digester = MessageDigest.getInstance("SHA-1");
    byte[] digest = digester.digest(telephonyManager.getDeviceId().getBytes());
    hashedID = (new BigInteger(1, digest)).toString(16);
    serviceName = hashedID;
    context = ctxt;
    appl = app;

}

现在错误来自空构造函数,它给出了错误

public Videoplanner() 
{
    super(null, null);

}

我也试过

 static Context context;
 static String str;

 public Videoplanner()
 {
      super(context,str);
 }

但这仍然给我同样的错误。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

如果您在课程中创建任何自定义constructor,则Compiler不会提供默认的空constructor。在这种情况下,如果要使用无参数constructor创建该类的Object,则必须提供空constructor

  

您不必为您的班级提供任何构造函数   这样做时一定要小心。编译器自动提供   无参数,没有构造函数的任何类的默认构造函数。   这个默认构造函数将调用的无参数构造函数   超类。在这种情况下,编译器会抱怨如果   superclass没有无参数构造函数,因此您必须验证   它确实如此。如果你的类没有明确的超类,那么它有一个   Object的隐式超类,它有一个无参数   构造

参考Documentation