如何在java中将类作为参数传递

时间:2018-04-02 19:03:34

标签: java

我想在java中传递一个类作为参数。 How do I pass a class as a parameter in Java?

这是我在答案中找到的东西,但这样做并不是我想要的。

我想做的是这样的事情:

public List<cls> getTouchingObjects(Class cls){
    List<cls> thing;
    //fill thing
    return thing;
}

它确实不起作用......任何想法我怎么能让它起作用?

1 个答案:

答案 0 :(得分:-1)

Class类采用通用参数。因此,不是传递Class cls,而是传递Class<T> cls

public <T> List<T> getTouchingObjects(Class<T> cls){
    List<T> thing;
    //fill thing
    return thing;
}

这允许您根据作为参数传递的类来指定返回类型。实施,仍然很可能是使用内省。

当然,因为它仍然允许客户端传递一个对您的上下文荒谬的类。我想无论你的方法做什么,它都不适用于字符串,但没有什么能阻止调用getTouchingObjects(String.class)。您没有指定那些触摸对象通常具有的类型,但为了示例,我将假设它们应该是ChessPiece的子类。在这种情况下,你可以像这样缩小方法:

public <T extends ChessPiece> List<T> getTouchingObjects(Class<T> cls){
    List<T> thing;
    //fill thing
    return thing;
}

就像这样,调用getTouchingObjects(String.class)甚至不会编译,并且您已经进一步提高了类型安全性。