2013-06-20 147 views
0

我可以从Class<T[]>获得Class<T>吗?如何从数组类型类中获取元素类型类?

public static <T> void doSometing(final Class<T[]> arrayType) { 

    final Class<T> elementType; // = @@? 
} 

或者,我可以从Class<T>Class<T[]>

+0

能否请你解释一下这个 –

+0

的用例我回滚了你的更新,因为它最终以一个新问题的形式出现。 –

回答

5

您可以使用Class.getComponentType(),虽然没有办法为这个方法给你泛型类型安全,所以你需要做一个未经检查的投获得Class<T>

public static <T> void doSomething(final Class<T[]> arrayType) { 

    @SuppressWarnings("unchecked") 
    final Class<T> componentType = (Class<T>)arrayType.getComponentType(); 

    //etc. 
} 

在倒,看这个问题:Obtaining the array Class of a component type

+0

你可以看看下面这个问题吗? http://stackoverflow.com/questions/17204788/two-methods-for-creating-a-generic-array –

+0

@JinKwon对不起,我没有看到更快。看起来它已经很好地回答了。 –