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?
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
Komentar yang paling membantu
Java tidak mendukung pewarisan anotasi
jika Anda membutuhkan metode abstrak
kode Anda bisa seperti ini: