全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java 创建动态类和查看方法列表信息的实例

 Java 创建动态类和查看方法列表信息的实例

Sample code :

import java.lang.reflect.Constructor; 
import java.lang.reflect.InvocationHandler; 
import java.lang.reflect.Method; 
import java.lang.reflect.Proxy; 
import java.lang.reflect.Type; 
import java.util.ArrayList; 
import java.util.Collection; 
 
public class ProxyTest { 
 
  public static void main(String[] args) throws Exception { 
    // TODO Auto-generated method stub 
    Class clazzProxy = Proxy.getProxyClass(Collection.class.getClassLoader(), Collection.class); 
    System.out.println(clazzProxy); 
    System.out.println("------constructor method list ------"); 
    Constructor[] constructors = clazzProxy.getConstructors(); 
    for(Constructor constructor:constructors){ 
      StringBuilder sb = new StringBuilder(constructor.getName()); 
      sb.append("("); 
      Type[] parameterTypes = constructor.getParameterTypes(); 
      for(Type parameterType:parameterTypes){ 
        sb.append(parameterType.toString()+","); 
      } 
      if(parameterTypes.length>0){ 
        sb.deleteCharAt(sb.length()-1); 
      } 
      sb.append(")"); 
      System.out.println(sb.toString()); 
       
    } 
    System.out.println("------constructor method list ------\n\n"); 
     
    System.out.println("------ method list ------"); 
    Method[] methods = clazzProxy.getMethods(); 
    for(Method method:methods){ 
      StringBuilder sb2 = new StringBuilder(method.getName()); 
      sb2.append("("); 
      Type[] parameterTypes = method.getParameterTypes(); 
      for(Type parameterType:parameterTypes){ 
        sb2.append(parameterType.toString()+","); 
      } 
      if(parameterTypes.length>0){ 
        sb2.deleteCharAt(sb2.length()-1); 
      } 
      sb2.append(")"); 
      System.out.println(sb2.toString()); 
       
    } 
    System.out.println("------ method list ------"); 
     
    Constructor proxyConstructor = clazzProxy.getConstructor(InvocationHandler.class); 
    class MyInvocationHandler implements InvocationHandler{ 
      ArrayList target = new ArrayList(); 
      public Object invoke(Object proxy, Method method, Object[] args) 
          throws Throwable { 
        Object obj = method.invoke(target, args); 
        return obj; 
      } 
       
    } 
    MyInvocationHandler mih = new MyInvocationHandler(); 
    Collection collectionProxy = (Collection) proxyConstructor.newInstance(mih); 
    collectionProxy.add("zhuang"); 
    collectionProxy.add("alex"); 
    System.out.println("collectionProxy size:"+collectionProxy.size()); 
     
    Collection collectionProxy2 = (Collection)Proxy.newProxyInstance(Collection.class.getClassLoader(),new Class[] {Collection.class},new InvocationHandler(){ 
      ArrayList target = new ArrayList(); 
      public Object invoke(Object proxy, Method method, Object[] args) 
          throws Throwable { 
        Object obj = method.invoke(target, args); 
        return obj; 
      } 
    }); 
     
    collectionProxy2.add("one"); 
    collectionProxy2.add("two"); 
    collectionProxy2.add("three"); 
    System.out.println("collectionProxy2 size:"+collectionProxy2.size()); 
  } 

运行结果:

class $Proxy0
------constructor method list ------
$Proxy0(interface Java.lang.reflect.InvocationHandler)
------constructor method list ------


------ method list ------
add(class java.lang.Object)
hashCode()
equals(class java.lang.Object)
clear()
toString()
contains(class java.lang.Object)
isEmpty()
addAll(interface java.util.Collection)
iterator()
size()
toArray(class [Ljava.lang.Object;)
toArray()
remove(class java.lang.Object)
containsAll(interface java.util.Collection)
removeAll(interface java.util.Collection)
retainAll(interface java.util.Collection)
isProxyClass(class java.lang.Class)
getProxyClass(class java.lang.ClassLoader,class [Ljava.lang.Class;)
newProxyInstance(class java.lang.ClassLoader,class [Ljava.lang.Class;,interface java.lang.reflect.InvocationHandler)
getInvocationHandler(class java.lang.Object)
wait()
wait(long,int)
wait(long)
getClass()
notify()
notifyAll()
------ method list ------
collectionProxy size:2
collectionProxy2 size:3


感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Java  # 创建动态类  # 创建动态类和查看方法列表  # Java实现动态创建类操作示例  # Java动态获取实现某个接口下所有的实现类对象集合  # Java实现的properties文件动态修改并自动保存工具类  # java 利用java反射机制动态加载类的简单实现  # 详解Java多态对象的类型转换与动态绑定  # Java动态调用类中方法代码  # 详解Java Spring各种依赖注入注解的区别  # Java的Spring框架中bean的继承与内部bean的注入  # 详解Java的MyBatis框架与Spring框架整合中的映射器注入  # Java 动态生成类和实例  # 并注入方法操作示例  # 希望能  # 谢谢大家  # Class  # stub  # method  # getClassLoader  # getProxyClass  # clazzProxy  # Exception  # throws  # args  # generated  # Auto  # TODO  # System  # append  # getName  # sb  # parameterType  # getParameterTypes 


相关文章: 网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  如何快速搭建虚拟主机网站?新手必看指南  成都网站制作公司哪家好,四川省职工服务网是做什么用?  建站主机SSH密钥生成步骤及常见问题解答?  如何快速建站并高效导出源代码?  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  三星网站视频制作教程下载,三星w23网页如何全屏?  如何高效生成建站之星成品网站源码?  javascript中的try catch异常捕获机制用法分析  建站主机选虚拟主机还是云服务器更好?  如何彻底卸载建站之星软件?  ,网页ppt怎么弄成自己的ppt?  如何快速登录WAP自助建站平台?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  企业微网站怎么做,公司网站和公众号有什么区别?  如何通过宝塔面板实现本地网站访问?  如何通过FTP空间快速搭建安全高效网站?  实例解析Array和String方法  建站主机服务器选购指南:轻量应用与VPS配置解析  黑客入侵网站服务器的常见手法有哪些?  巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成  山东云建站价格为何差异显著?  如何构建满足综合性能需求的优质建站方案?  如何通过可视化优化提升建站效果?  如何在Golang中使用replace替换模块_指定本地或远程路径  佛山企业网站制作公司有哪些,沟通100网上服务官网?  北京专业网站制作设计师招聘,北京白云观官方网站?  如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法  如何在IIS中新建站点并配置端口与IP地址?  已有域名和空间如何快速搭建网站?  金*站制作公司有哪些,金华教育集团官网?  如何在阿里云部署织梦网站?  如何生成腾讯云建站专用兑换码?  相册网站制作软件,图片上的网址怎么复制?  开源网站制作软件,开源网站什么意思?  ,网站推广常用方法?  javascript基本数据类型及类型检测常用方法小结  建站之星IIS配置教程:代码生成技巧与站点搭建指南  如何通过西部建站助手安装IIS服务器?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  黑客如何通过漏洞一步步攻陷网站服务器?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  ,怎么用自己头像做动态表情包?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  SQL查询语句优化的实用方法总结 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。