Mapper sans utiliser de tableau en java

J'ai écrit un article comme celui-ci l'autre jour.

Je veux me débarrasser du sur-imbriqué () https://qiita.com/tkturbo/items/04960f4e3e7226de3b46

J'ai écrit ici

// using custom object
const applier = (val)=>{
  const  o={
    value : val,
    apply : (unary)=>{ o.value=unary(o.value); return o; }
  };
  return o;
};
console.log(applier(name).apply(f0).apply(f1).apply(f2).value);

Convertissons cela en java aujourd'hui.

Applier.java


public class Applier<T> {
  private T value;
  public Applier(T value) {
    this.value = value;
  }
  // import java.util.function.Function;
  public <R> Applier<R> apply(Function<? super T, ? extends R> appliable){
    return new Applier<R>(appliable.apply(this.value));
  }
  public T get() { return this.value; }
}

Cela est vrai si vous utilisez l'interface java.util.function.Function.

C'est cette seule ligne qui sera la clé.

  public <R> Applier<R> apply(Function<? super T, ? extends R> appliable){

Pour cette raison, il est possible de traiter même si l'entrée et la sortie ont des types différents.

Par exemple

System.out.println(
  new Applier<String>("0001")
    .apply(v->Integer.parseInt(v,10))
    .apply(v->v+1)
    .apply(v->String.format("%04d", v))
    .get()
);

Il peut être utilisé comme ça.

personnellement,

    return new Applier<R>(appliable.apply(this.value));

Cette ligne est étrange, alors je veux l'écrire comme ça.

public class Applier<T> {
  private T value;
  public Applier(T value) {
    this.value = value;
  }
  public <R> Applier<R> apply(Appliable<? super T, ? extends R> appliable){
    return new Applier<R>(appliable.applyTo(this.value));
  }
  public T get() { return this.value; }
  @FunctionalInterface
  public static interface Appliable<T, R> {
    public R applyTo(T value);
  }
}

L'interface statique publique est utilisée pour empêcher la pollution de l'espace de noms.

Recommended Posts

Mapper sans utiliser de tableau en java
Méthode de recherche arbitraire dans un tableau utilisant la recherche binaire
Essayez d'utiliser RocksDB avec Java
À utiliser sans préparer de fichier d'authentification lors de l'utilisation du SDK Firebase Admin dans Java
J'ai essayé d'utiliser l'instruction Extended for en Java
[Ruby] Comptez un nombre pair dans un tableau en utilisant la méthode pair?
Je souhaite créer une applet Java sans utiliser d'IDE
[Java8] Utilisez stream pour trier les tableaux de type int dans l'ordre décroissant
Générer un flux à partir d'un tableau de types primitifs en Java
J'ai envoyé un e-mail en Java
Mémo d'apprentissage Java (création d'un tableau)
Chiffrer à l'aide du chiffrement RSA en Java
Obtenir des valeurs de carte nulles en Java
Utilisez des clés composites dans Java Maps.
[Java] Déclarer et initialiser un tableau
Essayez une expression If en Java
J'ai fait une annotation en Java.
Connexion HTTPS utilisant tls1.2 dans Java 6
J'ai essayé d'utiliser JWT en Java
Comment formater enum à l'aide de formatter-maven-plugin (Java)
Exécuter un processus externe en Java
[Java] tableau
Tableau Java
Tableau Java
Note n ° 1 "Comptage et affichage des valeurs en double dans un tableau" [Java]
java (tableau)
Tableau Java
[Java] Array
JAVA (Carte)
Tableau Java
Convertir un tableau de chaînes en une liste d'entiers en Java
[Android] Convertissez Map en JSON à l'aide de GSON avec Kotlin et Java
tableau java
[Java] Array
[Java] Type Express Enum sans utiliser le type Enum (énumération)
Lors de la recherche de plusieurs dans un tableau Java
Carte en double triée par clé en Java
Essayez d'utiliser l'API Stream en Java
Inverser la clé de la valeur dans la carte Java
[Java] Envoyer un e-mail à l'aide d'Amazon SES
Étude de Java Essayez d'utiliser un scanner ou une carte
Organisation des notes dans la tête (Java-Arrangement)
ERRORCODE = -4471 se produit dans une application Java qui utilise Db2.
Essayez d'utiliser l'API au format JSON en Java
Comparer les éléments d'un tableau (Java)
Lire Felica en utilisant RC-S380 (PaSoRi) en Java
[Spring MVC] Implémentez les paramètres dynamiques inclus dans l'URL sans utiliser Facultatif (~ Java7)
Je veux ForEach un tableau avec une expression Lambda en Java
[Session d'étude interne] Exécution des bases Java sans utiliser l'IDE- (2017/07/06)
Essayez d'ajouter du texte à une image avec Scala en utilisant la bibliothèque standard de Java
variable de tableau java
[Java] Création d'un fichier Excel à l'aide d'Apache POI
Implémenter un bouton de partage dans Rails 6 sans utiliser Gem
ChatWork4j pour l'utilisation de l'API ChatWork en Java
Je souhaite envoyer un e-mail en Java.
[Java] Création d'API à l'aide de Jerjey (Jax-rs) avec eclipse
Envoyer des e-mails à l'aide d'Amazon SES SMTP en Java
Envoyer des notifications push à l'aide de Notification Hubs en Java
Changements dans Java 11