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);