Android:如何使用Reflection创建一个Object并传递构造函数参数?

时间:2015-04-01 19:22:42

标签: java android reflection

我尝试使用android中的反射按钮,通过以下代码

 public String createView(String classFullName){
        try{
            Class clazz = Class.forName(classFullName);

            Object obj = clazz.newInstance(); // but I need to pass the Context using this;


        }
        catch(ClassNotFoundException ex){
            return null;
        }
    }

但主要的问题是如何将Context(在我的情况下是这样)传递给Object,因为它们都应该是一个View。

1 个答案:

答案 0 :(得分:4)

方法Class#newInstance()只是调用零参数构造函数的便捷方法。如果要调用带参数的构造函数,则需要使用Class#getConstructor(Class...)通过反射获取正确的Constructor实例,然后使用Constructor#newInstance(Object...)调用它。

所以:

Class clazz = Class.forName(classFullName);
Constructor<?> constructor = clazz.getConstructor(Context.class);
Object obj = constructor.newInstance(this);