⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reflector.java

📁 生成与Oracle相关的Ibatis相关配置文件及Java源码
💻 JAVA
字号:
/*
 * Copyright (c) 2008 胜利油田胜利软件有限责任公司. All rights reserved.
 */
package com.victorysoft.swt.base;

import java.lang.reflect.Array;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;

/**
 * 反射类
 * 
 * @author 于景洋
 * @newtime Oct 31, 2008,1:55:58 PM
 * @version 1.0
 * @see
 * @since JDK 1.5.0
 */
public class Reflector {
	@SuppressWarnings("unchecked")
	private static Map<Class, Class> map = new HashMap<Class, Class>();
	static{
		map.put(Byte.class, byte.class);
		map.put(Short.class, short.class);
		map.put(Integer.class, int.class);
		map.put(Long.class, long.class);
		map.put(Float.class, float.class);
		map.put(Double.class, double.class);
		map.put(Boolean.class, boolean.class);
		map.put(Character.class, char.class);
	}

	@SuppressWarnings("unchecked")
	private static Class convert(Class clazz){
		Class convertclazz = map.get(clazz);
		if(convertclazz == null){
			return clazz;
		} else{
			return convertclazz;
		}
	}
	
	/**
	 * 得到某个对象的公共属性
	 * 
	 * @param owner
	 *            对象
	 * @param field
	 *            属性名
	 * @return 返回方法执行结果,对无返回值的方法返回null
	 */
	@SuppressWarnings("unchecked")
	public static Object getProperty(Object owner, String field) {
		Class ownerClass = owner.getClass();
		Object property = null;
		try {
			property = ownerClass.getField(field).get(owner);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return property;
	}

	/**
	 * 得到某个对象的静态公共属性
	 * 
	 * @param clazz
	 *            类
	 * @param field
	 *            属性名
	 * @return 返回方法执行结果,对无返回值的方法返回null
	 */
	@SuppressWarnings("unchecked")
	public static Object getStaticProperty(Class clazz, String field) {
		Object property = null;
		try {
			property = clazz.getField(field).get(clazz);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return property;
	}

	/**
	 * 执行某对象的某无参方法
	 * 
	 * @param owner
	 *            对象
	 * @param method
	 *            方法名
	 * @return 返回方法执行结果,对无返回值的方法返回null
	 */
	@SuppressWarnings("unchecked")
	public static Object invokeMethod(Object owner, String method) {
		return invokeMethod(owner, method, new Class[] {}, new Object[] {});
	}

	/**
	 * 执行某对象的某带一个参数的方法(基本数据类型参数按其数据包装类执行)
	 * 
	 * @param owner
	 *            对象
	 * @param method
	 *            方法名
	 * @param object
	 *            参数
	 * @return 返回方法执行结果,对无返回值的方法返回null
	 */
	@SuppressWarnings("unchecked")
	public static Object invokeMethod(Object owner, String method, Object object) {
		return invokeMethod(owner, method, object.getClass(), object);
	}

	/**
	 * 执行某对象的某带一个参数的方法
	 * 
	 * @param owner
	 *            对象
	 * @param method
	 *            方法名
	 * @param clazz
	 *            参数类型
	 * @param object
	 *            参数
	 * @return 返回方法执行结果,对无返回值的方法返回null
	 */
	@SuppressWarnings("unchecked")
	public static Object invokeMethod(Object owner, String method, Class clazz,
			Object object) {
		Class[] classes = new Class[] { clazz };
		Object[] objects = new Object[] { object };
		return invokeMethod(owner, method, classes, objects);
	}

	/**
	 * 执行某对象的某带一组参数的方法(基本数据类型参数按其数据包装类执行)
	 * 
	 * @param owner
	 *            对象
	 * @param method
	 *            方法名
	 * @param objects
	 *            参数集
	 * @return 返回方法执行结果,对无返回值的方法返回null
	 */
	@SuppressWarnings("unchecked")
	public static Object invokeMethod(Object owner, String method,
			Object[] objects) {
		Class[] classes = new Class[objects.length];
		for (int i = 0; i < objects.length; i++) {
			classes[i] = objects[i].getClass();
		}
		return invokeMethod(owner, method, classes, objects);
	}

	/**
	 * 执行某对象的某带一组参数的方法
	 * 
	 * @param owner
	 *            对象
	 * @param method
	 *            方法名
	 * @param classes
	 *            参数类型集
	 * @param objects
	 *            参数集
	 * @return 返回方法执行结果,对无返回值的方法返回null
	 */
	@SuppressWarnings("unchecked")
	public static Object invokeMethod(Object owner, String method,
			Class[] classes, Object[] objects) {
		Object o = null;
		try {
			Method m = owner.getClass().getMethod(method, classes);
			o = m.invoke(owner, objects);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return o;
	}

	/**
	 * 执行某类的某无参静态公共方法
	 * 
	 * @param ownerclazz
	 *            类
	 * @param method
	 *            方法名
	 * @return 返回方法执行结果,对无返回值的方法返回null
	 */
	@SuppressWarnings("unchecked")
	public static Object invokeStaticMethod(Class ownerclazz, String method) {
		Class[] classes = {};
		Object[] objects = {};
		return invokeStaticMethod(ownerclazz, method, classes, objects);
	}

	/**
	 * 执行某类的某个含一个参数的静态公共方法(基本数据类型参数按其数据包装类执行)
	 * 
	 * @param ownerclazz
	 *            类
	 * @param method
	 *            方法名
	 * @param object
	 *            参数
	 * @return 返回方法执行结果,对无返回值的方法返回null
	 */
	@SuppressWarnings("unchecked")
	public static Object invokeStaticMethod(Class ownerclazz, String method,
			Object object) {
		Class[] classes = { object.getClass() };
		Object[] objects = { object };
		return invokeStaticMethod(ownerclazz, method, classes, objects);
	}

	/**
	 * 执行某类的某个含一个参数的静态公共方法
	 * 
	 * @param ownerclazz
	 *            类
	 * @param method
	 *            方法名
	 * @param clazz
	 *            参数类型
	 * @param object
	 *            参数
	 * @return 返回方法执行结果,对无返回值的方法返回null
	 */
	@SuppressWarnings("unchecked")
	public static Object invokeStaticMethod(Class ownerclazz, String method,
			Class clazz, Object object) {
		Class[] classes = { clazz };
		Object[] objects = { object };
		return invokeStaticMethod(ownerclazz, method, classes, objects);
	}

	/**
	 * 执行某类的某个含一组参数的静态公共方法(基本数据类型参数按其数据包装类执行)
	 * 
	 * @param ownerclazz
	 *            类
	 * @param method
	 *            方法名
	 * @param objects
	 *            参数集
	 * @return 返回方法执行结果,对无返回值的方法返回null
	 */
	@SuppressWarnings("unchecked")
	public static Object invokeStaticMethod(Class ownerclazz, String method,
			Object[] objects) {
		Class[] classes = new Class[objects.length];
		for (int i = 0, j = objects.length; i < j; i++) {
			classes[i] = objects[i].getClass();
		}
		return invokeStaticMethod(ownerclazz, method, classes, objects);
	}

	/**
	 * 执行某类的某个含一组参数的静态公共方法
	 * 
	 * @param ownerclazz
	 *            类
	 * @param method
	 *            方法名
	 * @param classes
	 *            参数类型集
	 * @param objects
	 *            参数集
	 * @return 返回方法执行结果,对无返回值的方法返回null
	 */
	@SuppressWarnings("unchecked")
	public static Object invokeStaticMethod(Class ownerclazz, String method,
			Class[] classes, Object[] objects) {
		Object o = null;
		try {
			Method m = ownerclazz.getMethod(method, classes);
			o = m.invoke(null, objects);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return o;
	}

	/**
	 * 新建无参实例
	 * 
	 * @param ownerclazz
	 *            类
	 * @return 返回新建实例
	 */
	@SuppressWarnings("unchecked")
	public static Object newInstance(Class ownerclazz) {
		Object o = null;
		try {
			o = ownerclazz.getConstructor().newInstance();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return o;
	}

	/**
	 * 新建含一个参数的实例(基本数据类型参数按其数据包装类执行)
	 * 
	 * @param ownerclazz
	 *            类
	 * @param object
	 *            参数
	 * @return 返回新建实例
	 */
	@SuppressWarnings("unchecked")
	public static Object newInstance(Class ownerclazz, Object object) {
		Class[] classes = { object.getClass() };
		Object[] objects = { object };
		return newInstance(ownerclazz, classes, objects);
	}

	/**
	 * 新建含一个参数的实例
	 * 
	 * @param ownerclazz
	 *            类
	 * @param object
	 *            参数
	 * @return 返回新建实例
	 */
	@SuppressWarnings("unchecked")
	public static Object newInstance(Class ownerclazz, Class clazz,
			Object object) {
		Class[] classes = { clazz };
		Object[] objects = { object };
		return newInstance(ownerclazz, classes, objects);
	}

	/**
	 * 新建含一组参数的实例(基本数据类型参数按其数据包装类执行)
	 * 
	 * @param ownerclazz
	 *            类
	 * @param objects
	 *            参数集
	 * @return 返回新建实例
	 */
	@SuppressWarnings("unchecked")
	public static Object newInstance(Class ownerclazz, Object[] objects) {
		Class[] classes = new Class[objects.length];
		for (int i = 0; i < objects.length; i++) {
			classes[i] = objects.getClass();
		}
		return newInstance(ownerclazz, classes, objects);
	}

	/**
	 * 新建含一组参数的实例(基本数据类型参数按其数据包装类执行)
	 * 
	 * @param ownerclazz
	 *            类
	 * @param classes
	 *            参数类型集
	 * @param objects
	 *            参数集
	 * @return 返回新建实例
	 */
	@SuppressWarnings("unchecked")
	public static Object newInstance(Class ownerclazz, Class[] classes,
			Object[] objects) {
		Object o = null;
		try {
			o = ownerclazz.getConstructor(classes).newInstance(objects);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return o;
	}

	/**
	 * 是不是某个类的实例
	 * 
	 * @param object
	 *            实例
	 * @param clazz
	 *            类
	 * @return 如果object是此类的实例,则返回true
	 */
	@SuppressWarnings("unchecked")
	public static boolean isInstance(Object object, Class clazz) {
		return clazz.isInstance(object);
	}

	/**
	 * 得到数组中的某个元素
	 * 
	 * @param array
	 *            数组
	 * @param index
	 *            索引
	 * @return 返回指定数组对象中索引组件的值
	 */
	public Object getByArray(Object array, int index) {
		return Array.get(array, index);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -