content: 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);
              }
          }
      }
  }
  