Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//package com.java2s;
/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 * 
 * Copyright 2011 OpenConcerto, by ILM Informatique. All rights reserved.
 * 
 * The contents of this file are subject to the terms of the GNU General Public License Version 3
 * only ("GPL"). You may not use this file except in compliance with the License. You can obtain a
 * copy of the License at http://www.gnu.org/licenses/gpl-3.0.html See the License for the specific
 * language governing permissions and limitations under the License.
 * 
 * When distributing the software, include this License Header Notice in each file.
 */

import java.lang.reflect.Method;

import java.util.List;

public class Main {
    private static final Method findMethod(Class<?> clazz, String name, List<Class<?>> actualArgs) {
        for (final Method m : clazz.getMethods()) {
            if (m.getName().equals(name) && callableWith(m.getParameterTypes(), actualArgs)) {
                return m;
            }
        }
        return null;
    }

    private static final boolean callableWith(Class<?>[] formalArgs, List<Class<?>> actualArgs) {
        if (formalArgs.length != actualArgs.size())
            return false;
        int i = 0;
        for (final Class<?> argClass : formalArgs) {
            final Class<?> actualArg = actualArgs.get(i);
            // null match everything
            if (actualArg != null && !argClass.isAssignableFrom(actualArg) && argClass != getPrimitive(actualArg))
                return false;
            i++;
        }

        return true;
    }

    private static Class<?> getPrimitive(Class<?> argClass) {
        if (argClass == Boolean.class)
            return Boolean.TYPE;
        else if (argClass == Character.class)
            return Character.TYPE;
        else if (argClass == Byte.class)
            return Byte.TYPE;
        else if (argClass == Short.class)
            return Short.TYPE;
        else if (argClass == Integer.class)
            return Integer.TYPE;
        else if (argClass == Long.class)
            return Long.TYPE;
        else if (argClass == Float.class)
            return Float.TYPE;
        else if (argClass == Double.class)
            return Double.TYPE;
        else
            return null;
    }
}