7

如果我有一个带有参数化泛型类型的构造函数的类:

public class Foo {
    public Foo(Map<String, Object> data) {
      ...
    }
}

...如果我想调用,如何引用该参数化 Map 的类:

Constructor constructor = cls.getConstructor(/*the Map class! */)

cls( Foo 类在哪里。)

我想做类似的事情:

Constructor constructor = cls.getConstructor(Map<String,Object>.class);

...但这不起作用。

我敢肯定有一个简单的答案!

4

2 回答 2

14

在运行时,这:

  Map<String,Object>

实际上只是一个 Map,没有任何参数。

打电话

 cls.getConstructor(Map.class) will be enough
于 2012-08-23T22:38:56.843 回答
4

您可以仅通过 Map 类型引用构造函数。通用参数在运行时被擦除:

Constructor constructor = Foo.class.getConstructor(Map.class);
于 2012-08-23T22:39:40.817 回答