< prev index next >

src/java.base/share/classes/java/lang/invoke/DelegatingMethodHandle.java

Print this page
rev 59151 : imported patch viewAs


  45     protected DelegatingMethodHandle(MethodType type, MethodHandle target) {
  46         super(type, chooseDelegatingForm(target));
  47     }
  48 
  49     protected DelegatingMethodHandle(MethodType type, LambdaForm form) {
  50         super(type, form);
  51     }
  52 
  53     /** Define this to extract the delegated target which supplies the invocation behavior. */
  54     protected abstract MethodHandle getTarget();
  55 
  56     @Override
  57     abstract MethodHandle asTypeUncached(MethodType newType);
  58 
  59     @Override
  60     MemberName internalMemberName() {
  61         return getTarget().internalMemberName();
  62     }
  63 
  64     @Override















  65     boolean isInvokeSpecial() {
  66         return getTarget().isInvokeSpecial();
  67     }
  68 
  69     @Override
  70     Class<?> internalCallerClass() {
  71         return getTarget().internalCallerClass();
  72     }
  73 
  74     @Override
  75     MethodHandle copyWith(MethodType mt, LambdaForm lf) {
  76         // FIXME: rethink 'copyWith' protocol; it is too low-level for use on all MHs
  77         throw newIllegalArgumentException("do not use this");
  78     }
  79 
  80     @Override
  81     String internalProperties() {
  82         return "\n& Class="+getClass().getSimpleName()+
  83                "\n& Target="+getTarget().debugString();
  84     }




  45     protected DelegatingMethodHandle(MethodType type, MethodHandle target) {
  46         super(type, chooseDelegatingForm(target));
  47     }
  48 
  49     protected DelegatingMethodHandle(MethodType type, LambdaForm form) {
  50         super(type, form);
  51     }
  52 
  53     /** Define this to extract the delegated target which supplies the invocation behavior. */
  54     protected abstract MethodHandle getTarget();
  55 
  56     @Override
  57     abstract MethodHandle asTypeUncached(MethodType newType);
  58 
  59     @Override
  60     MemberName internalMemberName() {
  61         return getTarget().internalMemberName();
  62     }
  63 
  64     @Override
  65     boolean isCrackable() {
  66         MemberName member = internalMemberName();
  67         return member != null &&
  68                 (member.isResolved() ||
  69                  member.isMethodHandleInvoke() ||
  70                  member.isVarHandleMethodInvoke());
  71     }
  72 
  73     @Override
  74     /*non-public*/
  75     MethodHandle viewAsType(MethodType newType, boolean strict) {
  76         return getTarget().viewAsType(newType, strict);
  77     }
  78 
  79     @Override
  80     boolean isInvokeSpecial() {
  81         return getTarget().isInvokeSpecial();
  82     }
  83 
  84     @Override
  85     Class<?> internalCallerClass() {
  86         return getTarget().internalCallerClass();
  87     }
  88 
  89     @Override
  90     MethodHandle copyWith(MethodType mt, LambdaForm lf) {
  91         // FIXME: rethink 'copyWith' protocol; it is too low-level for use on all MHs
  92         throw newIllegalArgumentException("do not use this");
  93     }
  94 
  95     @Override
  96     String internalProperties() {
  97         return "\n& Class="+getClass().getSimpleName()+
  98                "\n& Target="+getTarget().debugString();
  99     }


< prev index next >