Расширяет класс Java
Я пытаюсь использовать GPUImage
класс андроид. Я уже создал приложение для Android, но мне нужно добавить некоторые дополнительные функции в GPUImage
учебный класс.
Для этого я сделал:
public class GPUImageExt extends GPUImage {
}
Мне нужно переопределить некоторые из них, но я также должен добавить некоторые новые методы.
Например, SavedListener
существует, и мне нужно добавить дополнительного слушателя.
К сожалению, у меня есть проблема, говорящая:
There is no default constructor available in co.jp.cyberagent.android.gpuimage.GPUImage
Как это исправить?
4 ответа
Вы должны решить, какие существующие конструкторы GPUImage
звонить из конструкторов вашего подкласса.
Например, так как GPUImage
имеет конструктор, который принимает один параметр типа Context
Вы можете иметь в своем подклассе конструктор:
public GPUImageExt (Context context)
{
super (context);
...
}
или же:
public GPUImageExt (Context context, SomeOtherType someOtherParam)
{
super (context);
...
}
Вы можете увидеть источник здесь
Попробуй это
public GPUImageExt( final Context context )
{
super( context );
}
Ваши конструкторы должны вызывать объявленные конструкторы GPUImage
public GPUImage(final Context context)
Возможно, вы захотите подумать, хотите ли вы вообще создавать подклассы GPUImage, а не заключать его во что-то и использовать композицию / делегирование.
Конструктор по умолчанию - это конструктор, который не принимает аргументов, поэтому просто добавьте его в свой класс, даже если вы его не используете.
public class GPUImageExt extends GPUImage {
Context context;
public GPUImageExt (Context context)
{
super (context);
this.context = context;
...
}
//default constructor
GPUImageExt(){
super(context);
}
}