黑马程序员技术交流社区

标题: 代理 [打印本页]

作者: 苏周周    时间: 2014-6-17 22:01
标题: 代理
本帖最后由 苏周周 于 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);
                }
        }
}
作者: 何堂红    时间: 2014-6-17 23:47
你一点注释都不写,看着就头疼啊。今天面试怎么样?
作者: 冯云飞    时间: 2014-6-18 00:17
光看到个sb1  - -! 什么节奏。。
作者: 我、嘞个去    时间: 2014-6-18 07:33
哈哈,这么巧。。。:lol
作者: Rodgers    时间: 2014-6-18 08:52
具体问题是什么啊?
作者: 苏周周    时间: 2014-6-18 09:41
Rodgers 发表于 2014-6-18 08:52
具体问题是什么啊?

什么是代理,代理的作用
作者: 苏周周    时间: 2014-6-18 09:42
何堂红 发表于 2014-6-17 23:47
你一点注释都不写,看着就头疼啊。今天面试怎么样?

还好把,问到代理回答的迷迷糊糊的
作者: gyw520gyw    时间: 2014-6-18 22:46
:dizzy::dizzy::dizzy::dizzy::dizzy:




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2