The javadoc for makeConcattalks about the first parameter:
search Represents a search context with caller availability privileges
, publicLookup, .
, :
MethodType concatType = MethodType.methodType(String.class);
StringConcatFactory.makeConcat(MethodHandles.publicLookup(), "abc", concatType);
StringConcatFactory#doStringConcat:
if ((lookup.lookupModes() & MethodHandles.Lookup.PRIVATE) == 0) {
throw new StringConcatException("Invalid caller: " +
lookup.lookupClass().getName());
}
, publicLookup :
System.out.println((MethodHandles.publicLookup().lookupModes()
& MethodHandles.Lookup.PRIVATE) != 0);
System.out.println((MethodHandles.lookup().lookupModes()
& MethodHandles.Lookup.PRIVATE) != 0);