Rumah  >  Artikel  >  Menggunakan dua generik untuk melaksanakan antara muka

Menggunakan dua generik untuk melaksanakan antara muka

王林
王林ke hadapan
2024-02-09 10:45:09443semak imbas

Editor PHP Xinyi akan memperkenalkan kepada anda kaedah menggunakan dua generik untuk melaksanakan antara muka. Generik ialah ciri yang membolehkan penggunaan parameter jenis dalam bahasa pengaturcaraan, yang boleh meningkatkan fleksibiliti dan kebolehgunaan semula kod. Apabila melaksanakan antara muka, kita boleh menggunakan generik untuk menentukan jenis parameter dalam antara muka, supaya jenis data yang berbeza boleh digunakan dalam senario yang berbeza. Kaedah ini boleh menjadikan kod kami lebih serba boleh dan berskala serta meningkatkan kecekapan pembangunan. Dalam artikel ini, kami akan menerangkan secara terperinci cara menggunakan dua generik untuk melaksanakan antara muka dan memberikan kod sampel untuk rujukan anda.

Kandungan soalan

Saya mempunyai tugasan dalam kerja rumah saya tetapi saya tidak dapat mengatasinya.

Kod antara muka pengubah adalah seperti berikut:

public interface transformer<from, to> {
    to transform(from value);
}

Setakat ini, kod untuk kelas personsubscribertransformer kelihatan seperti ini:

public class PersonSubscriberTransformer<FROM, TO> implements Transformer {
    private Predicate<Person> predicate;
    public PersonSubscriberTransformer(Predicate<Person> predicate) {
        this.predicate = predicate;
    }
    @Override
    public Object transform(Object value) {
        return null;
    }
  }
Parameter kaedah

transform hendaklah list0833d296851a1e081f2175a4cbfa7135并且它应该返回一个list2dd1b1a23a493c1b50630f436ee0c708. Apabila saya menukar parameter, saya mendapat mesej ralat yang mengatakan bahawa saya harus menarik kaedah ke antara muka pengubah.

Apakah penyelesaian untuk melaksanakan kaedah ini dengan cara yang betul?

Penyelesaian

mengikut transform 的预期签名,from 应该是 list0833d296851a1e081f2175a4cbfa7135to 应该是 list<subscriberphpcngt phpcn. Kelas itu sendiri tidak seharusnya generik.

public class PersonSubscriberTransformer implements Transformer<List<Person>, List<Subscriber>> {
    // constructor...
    
    @Override
    public List<Subscriber> transform(List<Person> persons) {
        // complete this method...
        return null;
    }
}

Atas ialah kandungan terperinci Menggunakan dua generik untuk melaksanakan antara muka. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam