Java Reflection Method Getter Get getGetterMethod(Class beanClass, String property)

Here you can find the source of getGetterMethod(Class beanClass, String property)

Description

Returns getter method for property in specified beanClass

License

Open Source License

Parameter

Parameter Description
beanClass bean class
property name of the property

Return

getter method. null if property is not found

Declaration

public static Method getGetterMethod(Class<?> beanClass, String property) 

Method Source Code

//package com.java2s;
/**//  ww  w .  j  a  v  a 2 s .  c o  m
 * JLibs: Common Utilities for Java
 * Copyright (C) 2009  Santhosh Kumar T <santhosh.tekuri@gmail.com>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 */

import java.lang.reflect.Method;
import java.util.Locale;

public class Main {
    /** prefix used by non-boolean getter methods */
    public static final String GET = "get";
    /** prefix used by boolean getter methods */
    public static final String IS = "is";

    /**
     * Returns getter method for <code>property</code> in specified <code>beanClass</code>
     *
     * @param beanClass bean class
     * @param property  name of the property
     *
     * @return getter method. null if <code>property</code> is not found
     *
     * @see #getGetterMethod(Class, String, Class)
     */
    public static Method getGetterMethod(Class<?> beanClass, String property) {
        try {
            return beanClass.getMethod(GET + getMethodSuffix(property));
        } catch (NoSuchMethodException ex1) {
            try {
                return beanClass.getMethod(IS + getMethodSuffix(property));
            } catch (NoSuchMethodException ex2) {
                return null;
            }
        }
    }

    /**
     * Returns getter method for <code>property</code> in specified <code>beanClass</code>
     *
     * @param beanClass bean class
     * @param property  name of the property
     * @param propertyType type of the property. This is used to compute getter method name.
     *
     * @return getter method. null if <code>property</code> is not found
     *
     * @see #getGetterMethod(Class, String)
     */
    public static Method getGetterMethod(Class<?> beanClass, String property, Class propertyType) {
        try {
            try {
                if (propertyType == boolean.class)
                    return beanClass.getMethod(IS + getMethodSuffix(property));
            } catch (NoSuchMethodException ignore) {
                // ignore
            }
            return beanClass.getMethod(GET + getMethodSuffix(property));
        } catch (NoSuchMethodException ex) {
            return null;
        }
    }

    public static String getMethodSuffix(String property) {
        switch (property.length()) {
        case 0:
            throw new IllegalArgumentException("invalid property name: " + property);
        case 1:
            return property.toUpperCase(Locale.ENGLISH);
        default:
            char char0 = property.charAt(0);
            boolean upper0 = Character.isUpperCase(char0);
            char char1 = property.charAt(1);
            boolean upper1 = Character.isUpperCase(char1);
            if (upper0 && upper1) // XCoordinate ==> getXCordinate()
                return property;
            if (!upper0 && !upper1) // xcoordinate ==> getXcoordinate()
                return Character.toUpperCase(char0) + property.substring(1);
            if (!upper0 && upper1) // xCoordinate ==> getxCoordinate()
                return property;
            throw new IllegalArgumentException("invalid property name: " + property);
        }
    }
}

Related

  1. getGetterFor(Object obj, Field field, Class objClass)
  2. getGetterFromCache(Class clazz)
  3. getGetterFromProperty(Class clazz, String property)
  4. getGetterMethod(Class containingClass, String propertyName)
  5. getGetterMethod(Class type, String property)
  6. getGetterMethod(Class c, String field)
  7. getGetterMethod(Class clazz, String fieldName)
  8. getGetterMethod(Class clazz, String methodNameWithoutGetPrefix)
  9. getGetterMethod(Class clazz, String name)