全网整合营销服务商

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

免费咨询热线: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 


相关文章: 如何通过FTP空间快速搭建安全高效网站?  视频网站制作教程,怎么样制作优酷网的小视频?  如何快速搭建高效简练网站?  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  建站之星价格显示格式升级,你的预算足够吗?  如何破解联通资金短缺导致的基站建设难题?  高端建站如何打造兼具美学与转化的品牌官网?  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  建站为何优先选择香港服务器?  建站之星logo尺寸如何设置最合适?  制作表格网站有哪些,线上表格怎么弄?  如何快速搭建响应式可视化网站?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  临沂网站制作公司有哪些,临沂第四中学官网?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  网站网页制作专业公司,怎样制作自己的网页?  建站之星与建站宝盒如何选择最佳方案?  装修招标网站设计制作流程,装修招标流程?  郑州企业网站制作公司,郑州招聘网站有哪些?  网站制作员失业,怎样查看自己网站的注册者?  建站上传速度慢?如何优化加速网站加载效率?  如何零成本快速生成个人自助网站?  如何在建站之星绑定自定义域名?  详解jQuery停止动画——stop()方法的使用  如何配置IIS站点权限与局域网访问?  如何高效配置香港服务器实现快速建站?  高端建站三要素:定制模板、企业官网与响应式设计优化  如何在阿里云虚拟主机上快速搭建个人网站?  网站制作壁纸教程视频,电脑壁纸网站?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  如何快速搭建二级域名独立网站?  建站之星好吗?新手能否轻松上手建站?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  如何选择网络建站服务器?高效建站必看指南  如何制作一个表白网站视频,关于勇敢表白的小标题?  网站制作费用多少钱,一个网站的运营,需要哪些费用?  北京网站制作的公司有哪些,北京白云观官方网站?  个人网站制作流程图片大全,个人网站如何注销?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  在线制作视频网站免费,都有哪些好的动漫网站?  MySQL查询结果复制到新表的方法(更新、插入)  如何制作网站标识牌,动态网站如何制作(教程)?  如何通过wdcp面板快速创建网站?  香港服务器租用每月最低只需15元?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  Swift中循环语句中的转移语句 break 和 continue  如何选择适合PHP云建站的开源框架?  高防服务器如何保障网站安全无虞?  制作网站的公司有哪些,做一个公司网站要多少钱?  宿州网站制作公司兴策,安徽省低保查询网站? 

您的项目需求

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