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
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * See the License for the specific language governing permissions and
 * limitations under the License.
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