Java Reflection Method Setter Get getSetterMethod(final Class clazz, final String propertyName, final Class type)

Here you can find the source of getSetterMethod(final Class clazz, final String propertyName, final Class type)

Description

Returns the first public setter for the specified property and parameter type, or null for none

License

Open Source License

Declaration


public static Method getSetterMethod(final Class<?> clazz, final String propertyName, final Class<?> type) 

Method Source Code


//package com.java2s;
/*/*from   ww  w  . j a va2  s . c om*/
 *
 *  * Copyright (c) 2014- MHISoft LLC and/or its affiliates. All rights reserved.
 *  * Licensed to MHISoft LLC under one or more contributor
 *  * license agreements. See the NOTICE file distributed with
 *  * this work for additional information regarding copyright
 *  * ownership. MHISoft LLC licenses this file to you 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.
 *  
 *
 */

import java.util.ArrayList;

import java.util.List;

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

public class Main {
    /**
     * Returns the first public setter for the specified property and parameter type, or <code>null</code> for none
     */

    public static Method getSetterMethod(final Class<?> clazz, final String propertyName, final Class<?> type) {
        Method result = null;
        final int excludedModifiers = Modifier.ABSTRACT | Modifier.PRIVATE | Modifier.PROTECTED | Modifier.STATIC;
        final String name = "set" + propertyName;
        MAIN_LOOP: for (Class<?> c = clazz; c != null; c = c.getSuperclass()) {
            for (final Method m : c.getDeclaredMethods()) {
                final int methodModifiers = m.getModifiers();
                if ((methodModifiers & excludedModifiers) != 0)
                    continue;
                final String methodName = m.getName();
                if (name.equalsIgnoreCase(methodName) == false)
                    continue;
                if (m.getParameterTypes().length != 1)
                    continue;
                if (!m.getParameterTypes()[0].isAssignableFrom(type))
                    continue;
                result = m;
                break MAIN_LOOP;
            }
        }
        return result;
    }

    /**
     * List of all the methods of the class (not its superclasses).
     */
    private static List<Method> getDeclaredMethods(final Class<?> clazz, final int includedModifiers,
            final int excludedModifiers) {
        final List<Method> result = new ArrayList<Method>();
        for (final Method m : clazz.getDeclaredMethods()) {
            final int methodModifiers = m.getModifiers();
            if (includedModifiers != 0 && ((methodModifiers & includedModifiers) == 0))
                continue;
            if ((methodModifiers & excludedModifiers) == 0)
                result.add(m);
        }
        return result;
    }
}

Related

  1. getSetterMethod(Class classType, String fieldName, Class paramType)
  2. getSetterMethod(Class clazz, Field field)
  3. getSetterMethod(Class clazz, String name)
  4. getSetterMethod(Class cls, String property, Class valueCls)
  5. getSetterMethod(final Class clazz, final Class annotation, final String name, final String value)
  6. getSetterMethod(final String methodName, final Class pojoClass, final Class attributeClass)
  7. getSetterMethod(Object obj, String name)
  8. getSetterMethod(String getterName, Class returnType, Class containingClass)
  9. getSetterMethod(String setterName, Object bean, Class setterParamType)