2011-11-10 38 views
0

如果返回Class<?>[],如何存储变量调用的结果?这是我假设的工作中的泛型,但我无法弄清楚如何存储它。存储返回类型<?> []

例如当我做

myObject。 - 在这里>我得到的日食方法列表,当我去我希望它returns Class<?>[]

+0

你能给一个代码示例吗? – Marnix

+1

[] result = someMethod();.我错过了什么? –

+0

好吧 - 将它作为一个未知类型的数组存储它似乎很奇怪:/ – Biscuit128

回答

0

我认为这些问题表明了对泛型的误解。 当一个方法返回

Class<?>[] 

那是因为你说得那么它可以返回任何类型的类的数组。

当您实际使用该方法时,它不会评估真正的类是什么,它只是返回方法签名中声明的内容。然后,您可以检查结果中的每个对象,并获得实际的课程。泛型只是一种使弱类型的普通类(即集合类)更加强类型化的方式,它不是一种处理机制。它永远不会发现什么?是给你的。

如果您事先知道?可能是什么,请更改您的方法签名以指示它。你甚至可以声明它像

Class<? extends BaseClass>[] 

表明你只期望BaseClass的子类。

0

如果方法你希望你的代码保持通用的,你可以将其存放在

Class<?>[] 

变量。

如果您知道该类型并且不需要保持通用类型,则可以定义一个更受限制的类型变量并将该方法的结果转换为该类型的结果。

相关问题