我有一个库方法,它按类名返回一个对象集合。
例如
Iterable x = RunState.getInstance().getMasterContext().getObjects(XAgent.class);
将返回上下文中所有InstanceOf
XAgent.class
如果以这种方式使用它,它的效果非常好。我怎么需要一个方法来将类名传递给。
public Iterable getObjectsFromContext(Class clazz) {
return RunState.getInstance().getMasterContext().getObjects(clazz);
}
getObjectsFromContext(XAgent.class);
然后它不再起作用,它返回上下文的所有对象...所以它为什么不通过我的" clazz"变量到getObjects()?
这是getObjects()的链接ot javadoc; http://repast.sourceforge.net/docs/api/repast_simphony/repast/simphony/context/Context.html#getObjects-java.lang.Class-
IndexedIterable<T> getObjects(java.lang.Class<?> clazz)
更新:这有效:
public Iterable getObjectsFromContext(Class<?> clazz) {
return RunState.getInstance().getMasterContext().getObjects(clazz);
}
getObjectsFromContext(XAgent.class)
答案 0 :(得分:1)
这对我有用:
public Iterable getObjectsFromContext(Class<?> clazz) {
return RunState.getInstance().getMasterContext().getObjects(clazz);
}
getObjectsFromContext(XAgent.class)
建议给出正确答案,但我不再接受了,这就是我自己发布的原因。
答案 1 :(得分:-1)
这不起作用,因为你的包装器函数getObjectsFromContext显式地采用了一种“类”。
无论你传入什么,它都将被解释为类型“Class”,因此作为“Class”传递给getObjects()函数。这将解释为什么函数返回所有对象。
你需要让你的包装函数通用。
public Iterable<T> getObjectsFromContext(T clazz) {
return RunState.getInstance().getMasterContext().getObjects(clazz);
}