Package org.nutz.aop.asm

Source Code of org.nutz.aop.asm.Main2

package org.nutz.aop.asm;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

import org.nutz.Nutzs;
import org.nutz.aop.ClassAgent;
import org.nutz.aop.asm.test.Aop1;
import org.nutz.aop.asm.test.MyMethodInterceptor;
import org.nutz.aop.matcher.MethodMatcherFactory;
import org.nutz.castor.Castors;
import org.nutz.lang.Mirror;

public class Main2 {

  public static void main(String[] args) throws Throwable {

    ClassAgent agent = new AsmClassAgent();
    agent.addInterceptor(MethodMatcherFactory.matcher(".*"), new MyMethodInterceptor());
    Class<Aop1> classZ = agent.define(Nutzs.cd(), Aop1.class);
    System.out.println(classZ);
    Field[] fields = classZ.getDeclaredFields();
    for (Field field : fields) {
      System.out.println("找到一个Field: " + field);
    }
    Method methods[] = classZ.getDeclaredMethods();
    for (Method method : methods) {
      System.out.println("找到一个Method: " + method);
    }
    Constructor<?>[] constructors = classZ.getDeclaredConstructors();
    for (Constructor<?> constructor : constructors) {
      System.out.println("找个一个Constructor: " + constructor);
    }
    Aop1 a1 = Mirror.me(classZ).born("Wendal");
    a1.nonArgsVoid();
    a1.argsVoid("Wendal is the best!");
    a1.mixObjectsVoid("Arg1", new Object(), 1, null);
    a1.mixArgsVoid("XX", "WendalXXX", 0, 'c', 1L, 9090L);
    a1.mixArgsVoid2("Aop1",
            Boolean.TRUE,
            8888,
            'p',
            34L,
            false,
            'b',
            "Gp",
            null,
            null,
            23L,
            90L,
            78L);
    String result = (String) a1.mixArgsVoid4("WendalXXX");
    System.out.println("返回值: " + result);
    try {
      a1.x();
    }
    catch (Throwable e) {
      // TODO: handle exception
    }
    a1.returnString();
    a1.returnLong();
    a1.returnBoolean();
    a1.returnByte();
    a1.returnChar();
    a1.returnFloat();
    a1.returnShort();
    a1.toString();
    a1.equals(new Object());
    a1.getLog(new StringBuilder("I am OK"));
    try {
      a1.throwError();
    }
    catch (Throwable e) {
      System.out.println("抓住你:");
      e.printStackTrace(System.out);
    }
    a1.returnObjectArray();
    a1.returnLongArray();
    a1.returnBooleanArray();
    a1.returnByteArray();
    a1.returnCharArray();
    a1.returnFloatArray();
    a1.returnShortArray();
    {
      // 带异常的构造函数
      Constructor<?> constructor = a1  .getClass()
                      .getConstructor(new Class<?>[]{  Object.class,
                                      Object.class});
      System.out.println("构造方法:"
                + constructor
                + " \n带有的异常:"
                + Castors.me().castToString(constructor.getExceptionTypes()));
    }
    a1.getRunnable();
    a1.getEnum();
    System.out.println("-Demo Over-");
  }

}
TOP

Related Classes of org.nutz.aop.asm.Main2

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.