Я делаю это в контексте Android, но моя проблема в понимании Java.Я несколько новичок в обоих случаях, так что, надеюсь, я использую правильную терминологию здесь.
У меня есть несколько подклассов, унаследованных / расширенных от моего суперкласса (расширение Android Activity) под названием SuperActivity,Я также определил другой тип класса под названием Сеть (который является службой Android).В моем суперклассе я определяю анонимный внутренний класс, который реализует интерфейс (Android) под названием ServiceConnection.Этот интерфейс определяет (и поэтому я определяю) методы, которые будут вызываться системой Android.Я должен передать экземпляр этого анонимного внутреннего класса, реализующего ServiceConnection, методу bindService (), чтобы методы внутри этого анонимного внутреннего класса могли быть вызваны позже.
Как я уже говорил,Я создаю подкласс того суперкласса, который определяет анонимный внутренний класс.Методы в этом анонимном внутреннем классе должны установить переменную экземпляра в экземпляре подкласса;та переменная экземпляра, которую мне нужно установить, здесь называется mNetwork.
В суперклассе:
public class SuperActivity extends Activity {
protected Network mNetwork;
protected ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
mNetwork = ((Network.NetworkBinder)service).getService();
}
}
void bindNetwork() {
bindService( new Intent(this, Network.class), mConnection, Context.BIND_AUTO_CREATE);
}
}
Поэтому я создаю свой подкласс и вызываю его метод bindNetwork ().и, очевидно, анонимный внутренний класс, назначенный mConnection, не является членом экземпляра моего подкласса, поскольку после вызова метода OnServiceConnected (), определенного в анонимном внутреннем классе, экземпляр экземпляра подкласса с именем mNetwork имеет значение null.
Далее, если я возьму эту переменную mConnection, содержащую анонимный внутренний класс, и вызову getClass (). getName () для него или toString () для него, она покажет себя как внутренний класс моего суперкласса, а не подкласса.
Очевидно, я не понимаю что-то о наследовании Java.Я хочу иметь несколько подклассов, каждый со своей переменной mNetwork, установленной методом внутри анонимного внутреннего класса.Я не хочу вырезать и вставить определение анонимного внутреннего класса в каждый подкласс.Должен быть способ.Что я делаю не так?