我从另一个类继承了一个类,首先我没有给出空构造函数。但是在写完一个空构造函数之后,我的应用程序仍然会给出相同的错误。
错误:
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);
}
但这仍然给我同样的错误。有人可以帮忙吗?
答案 0 :(得分:2)
如果您在课程中创建任何自定义constructor
,则Compiler
不会提供默认的空constructor
。在这种情况下,如果要使用无参数constructor
创建该类的Object
,则必须提供空constructor
。
您不必为您的班级提供任何构造函数 这样做时一定要小心。编译器自动提供 无参数,没有构造函数的任何类的默认构造函数。 这个默认构造函数将调用的无参数构造函数 超类。在这种情况下,编译器会抱怨如果 superclass没有无参数构造函数,因此您必须验证 它确实如此。如果你的类没有明确的超类,那么它有一个 Object的隐式超类,它有一个无参数 构造