楼主想用这种方法做什么呢?

解决方案 »

  1.   

    你可以用匿名内部类。   完全符合你的想法。
      

  2.   

    动态代理。可以在运行时生成业务代码。
      

  3.   


    能运行时给一个类添加一个接口并实现这个接口的方法吗??
      

  4.   

    使用代理就可以实现,以JDK自带的代理方式来举例。
    //这是原始的接口
    public interface Display {
      public void show();
    }public interface DisplaySlow {
      public void showSlow();
    }
    使用JDK提供的代理方法,先要写一个Handler类。
    public class DisplayHandler implements InvocationHandler {  private static final String SHOW_FUNCTION_NAME = "show";  public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        String methodName = method.getName();
        if (SHOW_FUNCTION_NAME.equals(methodName)) {
          show();
        } else {
          showSlow();
        }
        
        return null;
      }  //Display接口中方法的实现
      private void show() {
        System.out.println("call show.");
      }
      
      //DisplaySlow接口中的方法实现
      private void showSlow() {
            System.out.println("call showSlow.");
      }
    }
    下面就是怎么创建这个代理实例了。
    public static void main(String[] args) throws Exception {
      Object o = Proxy.newProxyInstance(
                    Thread.currentThread().getContextClassLoader(),
                    new Class[]{ Display.class,DisplayShow.class}, new DisplayHandler());
      ((Display) o).show();
      ((DisplaySlow) o).showSlow();
    }
    如果为已经存在的实例创建一个代理,并增加新的接口。其实也就是基于上面例子先抽取出原先对象的所有接口,然后在自己实现的Handler类中把新接口的方法调用转到正确的地方去。