Java 从已知类型实例化类
我有一个存储类类型的数组 然后按照与关联的顺序实例化这些Java 从已知类型实例化类,java,android,Java,Android,我有一个存储类类型的数组 然后按照与关联的顺序实例化这些 public static class ViewHolderViewTypeStorage { private int layout; private Class<? extends BaseViewHolder> classType; public ViewHolderViewTypeStorage(int layout, Class<? extends BaseView
public static class ViewHolderViewTypeStorage {
private int layout;
private Class<? extends BaseViewHolder> classType;
public ViewHolderViewTypeStorage(int layout, Class<? extends BaseViewHolder> classType) {
this.layout = layout;
this.classType = classType;
}
public int getLayout() {
return layout;
}
public Class<? extends BaseViewHolder> getClassType() {
return classType;
}
}
我的问题是,它不起作用。我得到以下错误:
<init> [class my.app.mainui.ViewHolderLatestChangeTask]
错误消息为
<init> []
[]
任何想法,我都被卡住了
这是解决办法
return viewHolderViewTypeStorage.getClassType().getDeclaredConstructor(new Class<?>[]{View.class}).newInstance(newViewGroup);
返回viewHolderViewTypeStorage.getClassType().getDeclaredConstructor(新类[]{View.Class}).newInstance(newViewGroup);
当您调用类.getDeclaredConstructor()
时,您必须向它传递一个参数类型数组,每个类型都是类
,以便反射精确定位您所追求的确切构造函数
因此,您的第一次尝试是正确的,但是尝试调用
getDeclaredContractor()
将数组而不是单个类传递给它:class.getDeclaredContractor(新类[]{viewHolderViewTypeStorage.getClassType()})
当您调用class.getDeclaredConstructor()时
您必须向它传递一个参数类型数组,每个类型都是类
,以便反射精确定位您所追求的确切构造
因此,您的第一次尝试是正确的,但是尝试调用getDeclaredContractor()
将数组而不是单个类传递给它:class.getDeclaredContractor(新类[]{viewHolderViewTypeStorage.getClassType()})
<init> []
return viewHolderViewTypeStorage.getClassType().getDeclaredConstructor(new Class<?>[]{View.class}).newInstance(newViewGroup);