我想在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;
}
它确实不起作用......任何想法我怎么能让它起作用?
答案 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)
甚至不会编译,并且您已经进一步提高了类型安全性。