A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 苏周周 中级黑马   /  2014-6-17 22:01  /  2711 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 苏周周 于 2014-6-18 09:43 编辑

今天面试问到了代理:我下午回来学习了代理:如下代码;
package cn.itheima;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.Collection;

public class Test {
        public static void main(String[] args) throws Exception, Exception {
                Class clazzProxy=Proxy.getProxyClass(Collection.class.getClassLoader(), Collection.class);
                 System.out.println(clazzProxy.getName());
                 Constructor[] constructors = clazzProxy.getConstructors();
                 for (Constructor constructor:constructors) {
                         String name = constructor.getName();
                         StringBuilder sb = new StringBuilder(name);
                         sb.append('(');
                         Class[] parameterTypes = constructor.getParameterTypes();
                         for(Class parameterType:parameterTypes){
                                 String name2 = parameterType.getName();
                                 sb.append(name2+',');
                                 if(parameterTypes.length!=0&¶meterTypes!=null)
                                 sb.deleteCharAt(sb.length()-1);
                         }
                         sb.append(')');
                         System.out.println(sb.toString());
                 }         
               
                 Method[] mehtods = clazzProxy.getMethods();
                 for (Method mehtod:mehtods) {
                         String name1 = mehtod.getName();
                         StringBuilder sb1 = new StringBuilder(name1);
                         sb1.append('(');
                         Class[] parameterTypes1 = mehtod.getParameterTypes();
                         for(Class parameterType:parameterTypes1){
                                 String name2 = parameterType.getName();
                                 sb1.append(name2+',');
                                 if(parameterTypes1.length!=0&¶meterTypes1!=null)
                                 sb1.deleteCharAt(sb1.length()-1);
                         }
                         sb1.append(')');
                         System.out.println(sb1.toString());
                        
                        
                         System.out.println("==============================");
                         Constructor constructor = clazzProxy.getConstructor(InvocationHandler.class);               
                         Collection newInstance = (Collection) constructor.newInstance(new InvocationHandler(){

                                @Override
                                public Object invoke(Object proxy, Method method, Object[] args)
                                                throws Throwable {
                                        // TODO Auto-generated method stub
                                        return null;
                                }
                                 
                         });
                         System.out.println(newInstance);
                }
        }
}

7 个回复

倒序浏览
你一点注释都不写,看着就头疼啊。今天面试怎么样?
回复 使用道具 举报
光看到个sb1  - -! 什么节奏。。
回复 使用道具 举报
哈哈,这么巧。。。:lol
回复 使用道具 举报
具体问题是什么啊?
回复 使用道具 举报
Rodgers 发表于 2014-6-18 08:52
具体问题是什么啊?

什么是代理,代理的作用
回复 使用道具 举报
何堂红 发表于 2014-6-17 23:47
你一点注释都不写,看着就头疼啊。今天面试怎么样?

还好把,问到代理回答的迷迷糊糊的
回复 使用道具 举报
:dizzy::dizzy::dizzy::dizzy::dizzy:
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马