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.