Cette fois, il s'agit d'une référence de constructeur. La référence à la méthode dans l'article précédent spécifiait judicieusement que la mise en œuvre de la méthode abstraite du SI fonctionnel devrait être une méthode spécifique. Est-ce une image que vous pouvez spécifier une méthode en tant que méthode spécifique et un constructeur également?
Comme pour la dernière fois, préparez des FI fonctionnelles, le cas échéant. SampleBean est un bean de valeur de retour dédié préparé pour methodA de SampleFunctionalIF3, et SampleBeanExt est un bean qui l'étend simplement pour créer un constructeur par défaut. getter et setter sont omis.
@FunctionalInterface
public interface SampleFunctionalIF<T> {
String methodA(T object);
}
@FunctionalInterface
public interface SampleFunctionalIF2 {
String methodA();
}
@FunctionalInterface
public interface SampleFunctionalIF3 {
SampleBean methodA(String A, String B);
}
public class SampleBean {
private String val1;
private String val2;
}
public class SampleBeanExt extends SampleBean {
SampleBeanExt(String param1, String param2) {
this.setVal1(param1);
this.setVal2(param2);
System.out.println("Le constructeur SampleBeanExt appelé");
}
}
Donc, ce qui suit essaie de les exécuter.
public class ConstructorRef {
public static void main(String[] args) {
//Avec argument (String)dans le cas de
//Nouvelle chaîne au moment où la méthode abstraite methodA spécifiée par le type de fonction IF est appelée("xyz")Est appelé
System.out.println("-----Exemple 1-----");
SampleFunctionalIF<String> sample = String::new;
System.out.println(sample.methodA("xyz"));
//Aucun argument (chaîne)dans le cas de
//Nouvelle chaîne au moment où la méthode abstraite methodA spécifiée par le type de fonction IF est appelée()Est appelé
//La taille est de 0 car c'est un caractère vide
System.out.println("-----Exemple 2-----");
SampleFunctionalIF2 sample2 = String::new;
String s2 = sample2.methodA();
System.out.println(s2.length());
//Avec 2 arguments
//Au moment où la méthode abstraite methodA spécifiée par le type de fonction IF est appelée
// new SampleBeanExt("hello","world")Est appelé
System.out.println("-----Exemple 3-----");
SampleFunctionalIF3 sample3 = SampleBeanExt::new;
SampleBean bean = sample3.methodA("hello", "world");
System.out.println("1:" + bean.getVal1());
System.out.println("2:" + bean.getVal2());
}
}
Et le résultat de l'exécution
-----Exemple 1-----
xyz
-----Exemple 2-----
0
-----Exemple 3-----
Le constructeur SampleBeanExt appelé
1:hello
2:world
Après avoir fait la référence de la méthode, il semble que ce n'est pas bon. Cependant, je ne vois aucune utilité pour cela.
Recommended Posts