如何处理反射中的原始类型

时间:2014-03-18 04:15:43

标签: java reflection

如何调用具有基本类型作为参数的构造函数?我们将在运行时了解的类名。 就像我们在运行时知道类名是Abc一样,我们必须找到所有那些带有int,char,boolean作为参数类型的构造函数吗?

2 个答案:

答案 0 :(得分:4)

您可以使用TYPE Class对象。每个包装类都有一个,它代表相应的基本类型。你也可以用类文字引用这些文字,例如: char.class

因此,如果你有一些类在构造函数中采用原语:

public class Abc {
    public Abc(char c) {}
}

您可以使用基元类型获取构造函数:

Constructor<Abc> ctor;
ctor = Abc.class.getConstructor(Character.TYPE); // Character.TYPE and
ctor = Abc.class.getConstructor(char.class);     // char.class are the same

然后你可以用一个盒装基元来调用它:

Abc abc;
abc = ctor.newInstance(Character.valueOf('a')); // invoke with wrapper
abc = ctor.newInstance('a');                    // or autobox

您可以在原始类型中使用原始Class对象来引用基本类型。字段,方法等

答案 1 :(得分:0)

我们在反射中使用Wrapper类而不是原始类型