Eventbus: Bisakah kita berlangganan metode abstrak?

Dibuat pada 21 Agu 2016  ·  3Komentar  ·  Sumber: greenrobot/EventBus

Bisakah kita menempatkan anotasi @Subscribe ke metode abstrak di kelas induk saja dan tidak memasukkannya ke metode implementasi di kelas anak?

Sebagai contoh:

abstract class Parent {  
        <strong i="8">@Subscribe</strong> 
        public abstract void sayHi(EventMessage em); 
}
class ChildA{
        public void sayHi(EventMessage em){
                 System.out.println("Hi I am ChildA");
       }
}

Akankah kelas EventBus berfungsi dan mencetak pesan?

Komentar yang paling membantu

Java tidak mendukung pewarisan anotasi

jika Anda membutuhkan metode abstrak
kode Anda bisa seperti ini:

abstract  class Parent{

<strong i="8">@Subscribe</strong> 
public void onEvent(Event event){
   doEvent(event);
}

protected abstract void doEvent(Event event);
}
class Child{
     <strong i="11">@Override</strong>
     protected void doEvent(Event event){
   // do something
 }
}

Semua 3 komentar

Sejauh yang saya tahu Java tidak mendukung pewarisan anotasi . Jadi ini tidak bekerja di luar kotak.

Saya kira Anda bisa mengimplementasikan metode di kelas abstrak Anda dan kemudian menimpanya di kelas anak. Jika Anda mendaftarkan EventBus di dalam kelas induk, itu harus memanggil metode anak yang tepat.

Suka

abstract class Parent {  
        <strong i="9">@Subscribe</strong> 
        public void sayHi(EventMessage em) {
        }
}
class ChildA{
        <strong i="12">@Override</strong>
        public void sayHi(EventMessage em){
                 System.out.println("Hi I am ChildA");
       }
}

-ut

Java tidak mendukung pewarisan anotasi

jika Anda membutuhkan metode abstrak
kode Anda bisa seperti ini:

abstract  class Parent{

<strong i="8">@Subscribe</strong> 
public void onEvent(Event event){
   doEvent(event);
}

protected abstract void doEvent(Event event);
}
class Child{
     <strong i="11">@Override</strong>
     protected void doEvent(Event event){
   // do something
 }
}

Lihat dua solusi di atas. Tetap buka ini untuk referensi di masa mendatang jika kami ingin mendukung ini. -ut

Apakah halaman ini membantu?
0 / 5 - 0 peringkat