集册 Java实例教程 通过反射绑定方法参数

通过反射绑定方法参数

欢马劈雪     最近更新时间:2020-01-02 10:19:05

441
通过反射绑定方法参数

/**

 * Copyright 2007 Google Inc.

 *

 * Licensed under the Apache License, Version 2.0 (the "License");

 * you may not use this file except in compliance with the License.

 * You may obtain a copy of the License at

 *

 * http://www.apache.org/licenses/LICENSE-2.0

 *

 * Unless required by applicable law or agreed to in writing, software

 * distributed under the License is distributed on an "AS IS" BASIS,

 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

 * See the License for the specific language governing permissions and

 * limitations under the License.

 *//*来 自 n o w j a v a . c o m*/

//package com.nowjava;

import java.io.File;


import java.lang.reflect.Method;

import java.util.ArrayList;

import java.util.List;


public class Main {

    private static Object[] bindParameters(Method method, String[] args) {

        List<Object> parameters = new ArrayList<Object>();

        Class[] parameterTypes = method.getParameterTypes();

        for (int i = 0, len = parameterTypes.length; i < len; i++) {

            Class type = parameterTypes[i];

            int remaining = Math.max(0, args.length - i);

            if (type.equals(String[].class)) {

                String[] rest = new String[remaining];

                System.arraycopy(args, 1, rest, 0, remaining);

                parameters.add(rest);
                /*
                来 自*
                 N o w J a v a . c o m - 时  代  Java
                */

            } else if (remaining > 0) {

                parameters

                        .add(convertParameter(args[i], parameterTypes[i]));

            } else {

                parameters.add(null);

            }

        }

        return parameters.toArray();

    }


    private static Object convertParameter(String arg, Class type) {

        if (type.equals(String.class)) {

            return arg;

        } else if (type.equals(Integer.class)) {

            
展开阅读全文