这篇文章主要介绍了java反射技术与类使用示例,需要的朋友可以参考下
package com.java.db;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import com.java.entity.BookShelf;
import com.java.util.GetMetaDataCloumName;
public class GetNewInstances
Class[] cl = {};
Object[] ob = {};
/**
* 每次用完之后设为空 不然会累加
*/
public void setNullToArrays(){
this.cl = new Class[]{};
this.ob = new Object[]{};
}
/**
* copy Object数组
*
* @param obj
* 构造方法里需要的实际值
* @return
*/
public Object[] getObjectArrays(Object obj) {
ob = Arrays.copyOf(ob,ob.length + 1);
ob[ob.length - 1] = obj;
return ob;
}
/**
* copy Class 数组
*
* @param cla
* 要添加的class
*
* @return
*/
@SuppressWarnings("unchecked")
public Class[] getClassArrays(Class> cla) {
if (cla != null) {
cl = Arrays.copyOf(cl,cl.length + 1);
cl[cl.length - 1] = cla;
return cl;
}else{
return cl;
}
}
/**
* 得到类的实例
*
* @param clazz
* 要实例化的类
* @return 实例化之后的类
* @throws InstantiationException
* @throws IllegalAccessException
* @throws IllegalArgumentException
* @throws SecurityException
* @throws InvocationTargetException
* @throws NoSuchMethodException
*/
@SuppressWarnings("unchecked")
public Object getClassNewInstance(Class> clazz)
throws InstantiationException, IllegalAccessException,
IllegalArgumentException, SecurityException,
InvocationTargetException, NoSuchMethodException {
Object oj = null;
Constructor[] cons = clazz.getDeclaredConstructors();// 得到构造函数
Class[] cla = cons[1].getParameterTypes();
System.out.println("提示用户是否需要添加字段 构造函数参数的大小:"+cla.length);
for (int i = 0; i
// System.out.println("参数的类型:"+classStr);
if (classStr.equals("class java.lang.String")) {
getClassArrays(String.class);
} else if (classStr.equals("int")) {
getClassArrays(int.class);
} else if (classStr.equals("double")) {
getClassArrays(double.class);
} else if (classStr.equals("boolean")) {
getClassArrays(boolean.class);
} else if (classStr.equals("float")) {
getClassArrays(float.class);
} else if (classStr.equals("class java.lang.Integer")) {
getClassArrays(Integer.class);
}else if(classStr.equals("class java.lang.Float")){
getClassArrays(Float.class);
}
}
oj = clazz.newInstance();//返回当前对象 具体的实例化构造在BDOperater
return oj;
}
/**
* 通过构造函数得到具体的实例类
* @param clazz
* @return
* @throws IllegalArgumentException
* @throws SecurityException
* @throws InstantiationException
* @throws IllegalAccessException
* @throws InvocationTargetException
* @throws NoSuchMethodException
*/
public Object getObjCon(Class> clazz) throws IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException{
Object obj=null;
obj = this.getClassNewInstance(clazz);
return obj;
}
/**
* 得到对象的实例
* @param clazz
* @return
* @throws InstantiationException
* @throws IllegalAccessException
*/
public Object getNewinstance(Class clazz) throws InstantiationException, IllegalAccessException{
Object obj = null;
obj = clazz.newInstance();
return obj;
}
/**
* 根据反射得到类中的所有属性
* @param clazz 需要被获取属性的类
* @return 属性集合
* @throws SecurityException
* @throws IllegalArgumentException
* @throws InstantiationException
* @throws IllegalAccessException
* @throws InvocationTargetException
* @throws NoSuchMethodException
*/
public Field[] getFielsdArray(Class
以上就是java反射技术与类使用示例的详细内容,更多请关注0133技术站其它相关文章!