Heim  >  Artikel  >  Verwenden Sie zwei Generika, um die Schnittstelle zu implementieren

Verwenden Sie zwei Generika, um die Schnittstelle zu implementieren

王林
王林nach vorne
2024-02-09 10:45:09409Durchsuche

Der PHP-Editor Xinyi stellt Ihnen die Methode zur Verwendung von zwei Generika zur Implementierung der Schnittstelle vor. Generics sind eine Funktion, die die Verwendung von Typparametern in Programmiersprachen ermöglicht, wodurch die Flexibilität und Wiederverwendbarkeit von Code erhöht werden kann. Bei der Implementierung einer Schnittstelle können wir Generika verwenden, um die Typparameter in der Schnittstelle anzugeben, sodass unterschiedliche Datentypen in unterschiedlichen Szenarien verwendet werden können. Diese Methode kann unseren Code vielseitiger und skalierbarer machen und die Entwicklungseffizienz verbessern. In diesem Artikel erklären wir ausführlich, wie Sie zwei Generika zum Implementieren der Schnittstelle verwenden, und geben Beispielcode als Referenz.

Frageninhalt

Ich habe eine Aufgabe in meiner Hausaufgabe, komme aber nicht damit klar.

Der Code der Transformatorschnittstelle lautet wie folgt:

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

Bisher sieht der Code für die personsubscribertransformer-Klasse so aus:

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;
    }
  }
Die Parameter der

transform-Methode sollten list0833d296851a1e081f2175a4cbfa7135并且它应该返回一个list2dd1b1a23a493c1b50630f436ee0c708 sein. Wenn ich die Parameter ändere, erhalte ich eine Fehlermeldung, die besagt, dass ich die Methode auf die Transformer-Schnittstelle ziehen soll.

Was ist die Lösung, um diese Methode richtig umzusetzen?

Lösung

laut transform 的预期签名,from 应该是 list0833d296851a1e081f2175a4cbfa7135to 应该是 list<subscriberphpcngt phpcn. Klassen selbst sollten nicht generisch sein.

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

Das obige ist der detaillierte Inhalt vonVerwenden Sie zwei Generika, um die Schnittstelle zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen