All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.snapscript.core.type.index.MethodHandleBinder Maven / Gradle / Ivy

package org.snapscript.core.type.index;

import java.lang.invoke.MethodHandle;
import java.lang.reflect.Method;
import java.util.concurrent.atomic.AtomicReference;

public class MethodHandleBinder {

   private final AtomicReference reference;
   private final MethodHandleBuilder builder;

   public MethodHandleBinder(Method method) {
      this.reference = new AtomicReference();
      this.builder = new MethodHandleBuilder(method);
   }
   
   public MethodHandle bind(Object left) throws Exception {
      MethodHandle handle = reference.get();
      
      if(handle == null) {
         handle = builder.create();
         reference.set(handle);
      }
      return handle.bindTo(left);
   }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy