Как да използвам статичен абстрактен клас като обратно извикване в Java?

Опитвам се да разбера как мога да използвам статичен абстрактен клас като обратно извикване. Разглеждам документацията на Android тук и тук. Първата връзка е CameraManager, който има метод, наречен openCamera. Този метод изисква екземпляр на статичния абстрактен клас за обратно извикване StateCallback.

Основният ми въпрос е как статичен клас като обратно извикване ми предоставя нещо полезно? Например, това, което искам да направя, е да съхранявам CameraDevice локално от обратното извикване onOpened, но от това, което знам за статичните членове в C# (аз съм C# dev), това не би било възможно, защото статичните членове нямат достъп до нестатичните членове.

Трябва да не разбирам нещо за Java... Или това е предвидено следствие от дизайна на API?

Благодаря предварително.


person user3667122    schedule 12.03.2015    source източник
comment
Този клас е статичен. Вашият клас не трябва да бъде.   -  person user253751    schedule 12.03.2015


Отговори (1)


Трябва да го разширите и да създадете нов клас, който прилага тези методи, и да го прехвърлите в извикването. Тъй като Java е изцяло препратки, всеки параметър може да бъде предаден на обект, който също произлиза от този клас.

Също така статичен клас в Java просто означава, че той няма връзка към своя родителски обект, скрит вътре в него. Това улеснява GC да събира екземпляри. static в C#!=static в Java != static в C++ != static в C. По дяволите staic в повечето от тези езици означава различни неща в зависимост от това къде се използва.

person Gabe Sechan    schedule 12.03.2015
comment
Добре, има смисъл. Някаква идея защо просто не са използвали интерфейс? - person user3667122; 12.03.2015
comment
Те имат изпълнение по подразбиране за 1 или повече функции и не искат да се налага да го пренаписвате или копирате? - person Gabe Sechan; 12.03.2015