Etudier Java 8 (voir constructeur)

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

Etudier Java 8 (voir constructeur)
Etudier Java 8 (voir méthode)
Étudier Java ―― 3
Étudier Java ―― 9
java (constructeur)
Étudier Java ―― 4
Étudier Java -5
Étudier Java # 0
Étudier Java ―― 8
Constructeur Java
Étudier Java ②
Étudier Java ―― 7
Étudier Java ―― 2
Étudier Java ①
Étudier Java -10
Étudier Java 8 (facultatif)
Étudier java9 (jShell)
Étudier Java 8 (Stream)
Comprendre le constructeur java
Etudier comment utiliser le constructeur (java)
Etudier Java 8 (Collector / Collectors)
Étudier Java ~ Partie 8 ~ Cast
Traitement des appels du constructeur JAVA
Etudier Java 8 (expression lambda)
J'ai étudié le constructeur (java)
[Pour les débutants] Résumé du constructeur java
Étudier Java # 6 (Comment écrire des blocs)
Java
Java, constructeur de surcharge à partir du débutant
Etudier Java 8 (méthode StaticIF et Default)
Etudier Java 8 (String Joiner et Join)
Java
Étudier java9 (dropWhile, takeWhile et Stream.ofNullable)
constructeur
Étude de Java 8 (API de date dans le package java.time)
[# 1 Java] Principes de base de Java-Major avant d'étudier-
Étudier Java (examen d'ingénieur en informatique de base)
Forcer non immuable avec le constructeur privé Effective Java
[Java] Méthode d'instance, champ d'instance, méthode de classe, champ de classe, résumé du constructeur