Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 /*
  * Copyright (C) 2012 The Guava Authors
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.google.common.reflect;
public abstract class AbstractInvocationHandler implements InvocationHandler {
  private static final Object[] NO_ARGS = {};

  

java.lang.Object.equals(java.lang.Object), java.lang.Object.hashCode() are implemented according to referential equality (the default behavior of java.lang.Object). java.lang.Object.toString() delegates to toString() that can be overridden by subclasses.

  @Override public final Object invoke(Object proxyMethod method, @Nullable Object[] args)
      throws Throwable {
    if (args == null) {
      args = ;
    }
    if (args.length == 0 && method.getName().equals("hashCode")) {
      return System.identityHashCode(proxy);
    }
    if (args.length == 1
        && method.getName().equals("equals")
        && method.getParameterTypes()[0] == Object.class) {
      return proxy == args[0];
    }
    if (args.length == 0 && method.getName().equals("toString")) {
      return toString();
    }
    return handleInvocation(proxymethodargs);
  }

  
invoke(java.lang.Object,java.lang.reflect.Method,java.lang.Object[]) delegates to this method upon any method invocation on the proxy instance, except java.lang.Object.equals(java.lang.Object), java.lang.Object.hashCode() and java.lang.Object.toString(). The result will be returned as the proxied method's return value.

Unlike invoke(java.lang.Object,java.lang.reflect.Method,java.lang.Object[]), args will never be null. When the method has no parameter, an empty array is passed in.

  protected abstract Object handleInvocation(Object proxyMethod methodObject[] args)
      throws Throwable;

  
The dynamic proxies' java.lang.Object.toString() will delegate to this method. Subclasses can override this to provide custom string representation of the proxies.
  @Override public String toString() {
    return super.toString();
  }
New to GrepCode? Check out our FAQ X