package com.alibaba.json.bvt; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Method; import junit.framework.TestCase; import org.apache.commons.io.IOUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; public class TestExternal2 extends TestCase { public void test_0() throws Exception { ExtClassLoader classLoader = new ExtClassLoader(); Class theClass = classLoader.loadClass("com.alibaba.mock.demo.service.MockDemoService"); Method[] methods = theClass.getMethods(); //基本类型 if (void.class.isPrimitive()) { System.out.println("void"); } if (boolean.class.isPrimitive()) { System.out.println("boolean"); } for (Method method : methods) { System.out.println("name: " + method.getName()); Class[] paraClassArray = method.getParameterTypes(); for (Class paraClass : paraClassArray) { System.out.println("parameters: " + paraClass); Package pkg = paraClass.getPackage(); if (pkg == null || !pkg.getName().equals("java.lang")) { Object obj = paraClass.newInstance(); // System.out.println(obj); String kaka = JSON.toJSONString(obj, SerializerFeature.WriteMapNullValue); System.out.println(kaka); System.out.println(kaka); // ObjectMapper objectMapper = new ObjectMapper(); // String tt = objectMapper.writeValueAsString(obj); // System.out.println(tt); } } //System.out.println("return: " + method.getReturnType()); //System.out.println("description: " + method.toGenericString()); System.out.println(); } } public static class ExtClassLoader extends ClassLoader { public ExtClassLoader() throws IOException{ super(Thread.currentThread().getContextClassLoader()); { byte[] bytes; InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("external/Demo.clazz"); bytes = IOUtils.toByteArray(is); is.close(); super.defineClass("com.alibaba.mock.demo.api.Demo", bytes, 0, bytes.length); } { byte[] bytes; InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("external/MockDemoService.clazz"); bytes = IOUtils.toByteArray(is); is.close(); super.defineClass("com.alibaba.mock.demo.service.MockDemoService", bytes, 0, bytes.length); } } } }