我有一个抽象类Agent和一堆扩展它的类,ModAgent,ClassAgent等。
在另一个类Toroid中,我持有一个多维数组(好吧,嵌套数组,这是java),目前类型为Agent [] []。我想要做的是在Toroid的构造函数中获取实现Agent的特定类型的对象,并将该数组声明/初始化为该特定类型的Agent,以便我可以访问ClassAgent中的特定方法未在代理商中声明。任何人都可以告诉我如何解决这个问题吗?
其次,我有一些方法作为列表返回该多维数组的较小部分。与数组一样,当前具有返回类型的代理。有没有办法让返回类型特定于Array所持有的Agent类型?
答案 0 :(得分:0)
我想要做的是在Toroid的构造函数中获取实现Agent的特定类型的对象,并将该数组声明/初始化为该特定类型的Agent
您可以使用类似
的内容public class Toroid <A extends Agent> {
private final A[][] agents;
public Toroid(Class<A> aClass) {
Class<A[]> aClassArray = (Class<A[]>) Array.newInstance(aClass, 0).getClass();
agents = (A[][]) Array.newInstance(aClassArray, 100);
这样我就可以访问未在代理中声明的ClassAgent中的特定方法。
你做不到,因为A只是一个特工。如果要使用特定方法,则需要转换对象。
有没有办法让返回类型特定于Array所持有的Agent类型?
您可以返回A[]