Расширяет класс 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);
}

}
Другие вопросы по тегам