请java高手帮我看看这个报错是什么原因?
4个回答
展开全部
package developer.hhb.util;
import java.lang.reflect.Constructor;
/**
* 通过反射获得实例
* @author HHB
*/
public class ClassReflexUtil {
/**
* 当构造器被私有化时,不能通过 new 创建实例,这时候可以使用反射获得一个实例。
* @param clazz 要获得的实例的类型
* @param params 构造器需求的参数,必须按顺序、类型放置
* @return
* @throws Exception
*/
public static <T>T newInstance(Class<T> clazz, Object... params) throws Exception{
int paramsNumuber = params == null ? 0 : params.length;
@SuppressWarnings("unchecked")
Constructor<T>[] constructors = (Constructor<T>[]) clazz.getDeclaredConstructors();
T instance = null;
for(Constructor<T> constructor : constructors){
if(constructor.getGenericParameterTypes().length == paramsNumuber){
constructor.setAccessible(true);
if(paramsNumuber == 0){
instance = constructor.newInstance();
break;
}else{
try{
instance = constructor.newInstance(params);
break;
}catch(Exception e){
}
}
}
}
return instance;
}
/**
* 当构造器被私有化时,不能通过 new 创建实例,这时候可以使用反射获得一个实例。
* @param className 要获得的实例的类型名称,带包名
* @param params 构造器需求的参数,必须按顺序、类型放置
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
public static <T>T newInstance(String className, Object... params) throws Exception{
Class<T> clazz = (Class<T>) Class.forName(className);
return newInstance(clazz, params);
}
}
import java.lang.reflect.Constructor;
/**
* 通过反射获得实例
* @author HHB
*/
public class ClassReflexUtil {
/**
* 当构造器被私有化时,不能通过 new 创建实例,这时候可以使用反射获得一个实例。
* @param clazz 要获得的实例的类型
* @param params 构造器需求的参数,必须按顺序、类型放置
* @return
* @throws Exception
*/
public static <T>T newInstance(Class<T> clazz, Object... params) throws Exception{
int paramsNumuber = params == null ? 0 : params.length;
@SuppressWarnings("unchecked")
Constructor<T>[] constructors = (Constructor<T>[]) clazz.getDeclaredConstructors();
T instance = null;
for(Constructor<T> constructor : constructors){
if(constructor.getGenericParameterTypes().length == paramsNumuber){
constructor.setAccessible(true);
if(paramsNumuber == 0){
instance = constructor.newInstance();
break;
}else{
try{
instance = constructor.newInstance(params);
break;
}catch(Exception e){
}
}
}
}
return instance;
}
/**
* 当构造器被私有化时,不能通过 new 创建实例,这时候可以使用反射获得一个实例。
* @param className 要获得的实例的类型名称,带包名
* @param params 构造器需求的参数,必须按顺序、类型放置
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
public static <T>T newInstance(String className, Object... params) throws Exception{
Class<T> clazz = (Class<T>) Class.forName(className);
return newInstance(clazz, params);
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
( (person) con[0] ).newInstance()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
传一个数组对象数组类型的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询