Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将类对象传递给方法_Java - Fatal编程技术网

Java 将类对象传递给方法

Java 将类对象传递给方法,java,Java,我有一个库方法,它按类名返回对象集合 比如说 Iterable x = RunState.getInstance().getMasterContext().getObjects(XAgent.class); 将返回上下文中作为XAgent.class实例的所有对象的列表 如果用那种方式使用,效果会很好。无论何时我都需要一个方法来传递类名 public Iterable getObjectsFromContext(Class clazz) { return RunState.ge

我有一个库方法,它按类名返回对象集合

比如说

Iterable x = RunState.getInstance().getMasterContext().getObjects(XAgent.class);
将返回上下文中作为XAgent.class实例的所有对象的列表

如果用那种方式使用,效果会很好。无论何时我都需要一个方法来传递类名

public Iterable getObjectsFromContext(Class clazz) {
        return RunState.getInstance().getMasterContext().getObjects(clazz);
    }

getObjectsFromContext(XAgent.class);
然后它不再工作了,它返回所有上下文对象。。。那么为什么它不将我的clazz变量传递给getObjects呢

下面是getObjects的linkt-ot-javadoc;

更新:这项工作:

 public Iterable getObjectsFromContext(Class<?> clazz) {
         return RunState.getInstance().getMasterContext().getObjects(clazz);
    }
    getObjectsFromContext(XAgent.class)

这将不起作用,因为您的包装函数getObjectsFromContext显式接受一种类型的类

无论您传入什么,它都将被解释为类型类,从而作为类传递到getObjects函数中。这将解释函数返回所有对象的原因

您需要使包装器函数具有通用性

public Iterable<T> getObjectsFromContext(T clazz) {
    return RunState.getInstance().getMasterContext().getObjects(clazz);
}
这对我很有用:

public Iterable getObjectsFromContext(Class<?> clazz) {
     return RunState.getInstance().getMasterContext().getObjects(clazz);
}
getObjectsFromContext(XAgent.class)

有人提出了一个正确的答案,但我认为它不再可以接受,这就是为什么我自己发布它。

我认为您需要提供一个MCVE:它实际上是MCVE。这里是指向javadoc的链接:我怀疑这不是您调用的实际代码。如果是的话,它应该会起作用。请尝试调试调用getObjectsFromContextXAgent.classyou's是正确的。调试后,我发现我输出了一个错误的数组Tank you,但是我得到了一个错误:类型上下文中的方法getObjectsClass不适用于我也尝试过的参数,但是它只传递了类,所以结果与以前相同。public Iterable getObjectsFromContextClass clazz{return RunState.getInstance.getMasterContext.getObjectsclazz;}我想你搞错了。getObjects需要一个类。对不起,你是什么意思?clazz类不是类的实例吗?嗨;对不起,我实际上不熟悉repast,只是想根据我对键入和泛型的理解提供一个解决方案。很抱歉,它不起作用,但看起来你现在明白了。
public Iterable getObjectsFromContext(Class<?> clazz) {
     return RunState.getInstance().getMasterContext().getObjects(clazz);
}
getObjectsFromContext(XAgent.class)