Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Arrays_Generics_Multidimensional Array_Abstract - Fatal编程技术网

如何创建抽象类和抽象类的数组,以便将其初始化为特定的非抽象类(java)

如何创建抽象类和抽象类的数组,以便将其初始化为特定的非抽象类(java),java,arrays,generics,multidimensional-array,abstract,Java,Arrays,Generics,Multidimensional Array,Abstract,我有一个抽象类代理和一堆扩展它的类,ModAgent,ClassAgent等等 在另一个类Toroid中,我持有一个多维数组(嗯,嵌套数组,这是java),当前的类型为Agent[]。我希望能够在Toroid的构造函数中获取实现代理的特定类型的对象,并将数组声明/初始化为该特定类型的代理,这样我就可以访问ClassAgent中未在代理中声明的特定方法。有人能告诉我怎么做吗 其次,我有一些方法以列表的形式返回多维数组的较小部分。与数组一样,当前具有返回类型的代理。是否有办法使返回类型特定于数组所持

我有一个抽象类代理和一堆扩展它的类,ModAgent,ClassAgent等等

在另一个类Toroid中,我持有一个多维数组(嗯,嵌套数组,这是java),当前的类型为Agent[]。我希望能够在Toroid的构造函数中获取实现代理的特定类型的对象,并将数组声明/初始化为该特定类型的代理,这样我就可以访问ClassAgent中未在代理中声明的特定方法。有人能告诉我怎么做吗

其次,我有一些方法以列表的形式返回多维数组的较小部分。与数组一样,当前具有返回类型的代理。是否有办法使返回类型特定于数组所持有的代理类型

我希望能够在Toroid的构造函数中获取实现代理的特定类型的对象,并将数组声明/初始化为该特定类型的代理

你可以用像

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);
公共类圆环体{
私人最终A[][]代理人;
公共环面(类aClass){
类aClassArray=(类)Array.newInstance(aClass,0.getClass();
agents=(A[][])Array.newInstance(aClassArray,100);
这样我就可以访问ClassAgent中未在agent中声明的特定方法

你不能这样做,因为A只是一个代理。如果你想使用单独的方法,你需要强制转换对象

是否有办法使返回类型特定于数组所持有的代理类型


你可以返回
A[]

与只返回
Agent[]][]]
@newacct相比,创建
A[][]
没有任何好处。我同意。这很复杂,但我怀疑它不会满足OP的要求。