杭州 来未来 java笔试题 考察如何获取指定接口的代理类实例

 

考察:

给你接口名的字符串,给你方法名和方法实现的字符串,通过字符串构造一个指定接口的代理类的实例

题目:

杭州 来未来 java笔试题 考察如何获取指定接口的代理类实例_第1张图片

答案:

import java.lang.reflect.Proxy;

public class Test {
    public static void main(String[] arges) throws Exception {
        IA ia = (IA) createObject(IA.class.getName() + "$getName = Abc");
        System.out.println(ia.getName()); //输出Abc
        ia = (IA) createObject(IA.class.getName() + "$getName = Bcd");
        System.out.println(ia.getName()); //输出Bcd
    }

    //请实现方法createObject
    public static Object createObject(String str) throws Exception {

        String className = str.substring(0, str.lastIndexOf("$"));
        String methodName = str.substring(str.lastIndexOf("$") + 1, str.lastIndexOf("=")).trim();
        String value = str.substring(str.indexOf("=") + 1).trim();
        return Proxy.newProxyInstance(Class.forName(className).getClassLoader(), new Class[]{Class.forName(className)},
                ((proxy, method, args) -> {
                    if (method.getName().equals(methodName)) {
                        return value;
                    }else{
                        throw new UnsupportedOperationException("Unsupported method:" + method.getName());
                    }
                }));
    }
}

interface IA {
    String getName();
}

 

你可能感兴趣的:(面试题)