Etudier Java 8 (voir méthode)

Cette fois, nous étudions la référence de méthode. Il semble que vous puissiez affecter une méthode à une variable IF de type fonction. Je pense que c'est une image de vous dire d'exécuter cette méthode d'affectation (spécifiée) lorsque la (seule) méthode abstraite du type de fonction IF est appelée. Pour ceux qui ont oublié le SI fonctionnel voir l'article précédent

Pour le moment, préparez deux FI fonctionnels comme indiqué ci-dessous.

@FunctionalInterface
public interface SampleFunctionalIF {

	String methodA();

}
@FunctionalInterface
public interface SampleFunctionalIF2 {

	String methodA(String A, String B);

}

Alors, voici une classe qui les appelle

/**
 *Référence de la méthode d'étude.
 *Les méthodes peuvent être affectées à des variables IF fonctionnelles.
 *Type de fonction IF(Je pense que c'est une image de vous dire d'exécuter cette méthode d'affectation (spécifiée) lorsque la (seule) méthode abstraite est appelée.
 * @author komikcomik
 *
 */
public class MethodRef {

	public static void main(String[] args) {
		/*Sans arguments*/
		//Une image qui vous demande d'exécuter la méthode hello de cette classe à la place lorsque methodA, qui est un IF abstrait de SampleFunctionalIF, est appelée.
		System.out.println("-----Exemple 1-----");
		SampleFunctionalIF if1 = MethodRef::hello;
		System.out.println(if1.methodA());

		/*Avec un seul argument*/
		//Cette zone a juste un prix approprié dans la liste
		System.out.println("-----Exemple 2-----");
		List<String> l = new ArrayList<>();
		l.add("hoge");
		l.add("hogehoge");
		l.forEach(System.out::println); //Implémentation système de la méthode abstraite de List qui est IF fonctionnelle.out.println(s)Image spécifiée comme
		l.forEach(MethodRef::echo); //C'est similaire à celui ci-dessus, mais vous pouvez bien sûr remplacer votre propre méthode


		/*Avec 2 arguments*/
		System.out.println("-----Exemple 3-----");
		SampleFunctionalIF2 if2 = MethodRef::join;
		System.out.println(if2.methodA("Hello", "World"));

	}

	public static String hello() {
		System.out.println("La méthode hello a été appelée");
		return "hello";

	}

	public static String join(String A, String B) {
		return A + B;

	}

	public static void echo(String s) {
		System.out.println(s);
	}
}

Le résultat de l'exécution est le suivant.

-----Exemple 1-----
La méthode hello a été appelée
hello
-----Exemple 2-----
hoge
hogehoge
hoge
hogehoge
-----Exemple 3-----
HelloWorld

Eh bien comme prévu. Cependant, je n'ai pas l'habitude d'écrire en style lambda ou d'écrire comme :: cette fois, donc je me prépare en quelque sorte ... L'expression lambda est écrite comme argument-> processing </ b>, et si vous écrivez l'équivalent de cet exemple 2 dans l'expression lambda

		l.forEach(s -> {
			System.out.println(s);
		});

Il semble donc qu'un effet similaire puisse être obtenu. Comment les gens qui l'utilisent correctement l'utilisent-ils correctement?

Recommended Posts

Etudier Java 8 (voir méthode)
Etudier Java 8 (voir constructeur)
Étudier Java ―― 3
Étudier Java ―― 9
Méthode Java
java (méthode)
Étudier Java ―― 4
Étudier Java -5
Étudier Java ―― 1
Étudier Java # 0
Étudier Java ―― 8
Méthode Java
Étudier Java ②
[Java] méthode
Étudier Java ―― 7
Étudier Java ―― 2
Étudier Java ①
Étudier Java -10
[Java] méthode
Référence de la méthode Java8
Étudier Java 8 (facultatif)
[Java] méthode forEach
Étudier java9 (jShell)
Étudier Java 8 (Stream)
référence de la méthode java8
[Java] Méthode aléatoire
[Java] méthode de fractionnement
Méthode de connexion JAVA DB
Etudier Java 8 (Collector / Collectors)
Java Learning 2 (Apprenez la méthode de calcul)
Mémo d'apprentissage Java (méthode)
À propos de la liaison de méthode Java
A propos des méthodes de fractionnement (Java)
Programmation Java (méthode de classe)
Étudier Java ~ Partie 8 ~ Cast
Etudier Java 8 (expression lambda)
[Java] Notes de méthode de base
[Java] Nouvelle méthode de génération de threads (2)
À propos de la condition de décision de la méthode Java GC
Mémo de la méthode d'étude Java Silver
Créer une méthode java [Memo] [java11]
Collection de méthodes de code de test Java
[Java Silver] À propos de la méthode equals
[Java] Méthode d'implémentation du traitement du minuteur
[Java] Méthode de génération aléatoire (aléatoire)
Méthodes Java et surcharges de méthodes
Avantages de la méthode statique Java
[Java Silver] Comment générer un tableau
[Java] Nouvelle méthode de génération de threads (1)
[Java] Syntaxe orientée objet - Méthode / argument de classe
Méthode de redimensionnement automatique des photos par Java
Liste des méthodes Java (mémoire) (en construction)
[Java] Comment utiliser la méthode de jointure
Transition d'écran par méthode Post [Java]
[Java] Syntaxe orientée objet --Classe / champ / méthode / portée
Comparaison Java à l'aide de la méthode compareTo ()
[Java débutant] == opérateur et méthode equals
Java
Etudier Java 8 (méthode StaticIF et Default)
Essayez d'extraire la méthode publique de java