Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.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_Parameters_Instance - Fatal编程技术网

Java 如何将类的实例传递给作为参数的数组?

Java 如何将类的实例传递给作为参数的数组?,java,arrays,parameters,instance,Java,Arrays,Parameters,Instance,我有一个方法,其中一个参数是数组: public ItemToolPickaxe(int itemNum, String itemName, String iconName, Block[] usedOn, int durability, int quality) { super(itemNum, itemName, iconName, usedOn, durability, quality); } 块是可以在其上使用的块。在我的代码中,我有: public stat

我有一个方法,其中一个参数是数组:

public ItemToolPickaxe(int itemNum, String itemName, String iconName, Block[] usedOn, int durability, int quality) {
        super(itemNum, itemName, iconName, usedOn, durability, quality);

    }
块是可以在其上使用的块。在我的代码中,我有:

public static Item ironPickaxe = new ItemToolPickaxe(0, "Iron Pickaxe", "item_ironPickaxe", new Block[] { Block.stone }, 500, 75);
我想把鹤嘴锄用在Block.stone和任何Block.stone实例上
BlockOre
扩展块,如我的块类中所示:

public static Block oreIron = new BlockOre(/*Non-Related*/);
所以我想:

public static Item ironPickaxe = new ItemToolPickaxe(0, "Iron Pickaxe", "item_ironShovel", new Block[] { Block.stone, BlockOre.class }, 500, 75);

但正如你现在可能知道的那样,它不起作用。有解决方案吗?

创建一个空的ArrayList。遍历块数组,并为每个项检查它是否是BlockOre的实例。如果是,则将其添加到ArrayList。完成后,将ArayList转换为数组,并将其传递给Pickaxe构造函数

编辑:

以下是要求的代码:

package test;

import java.util.ArrayList;

public class Test {

    static class Block {};

    static class OreBlock extends Block {};

    public static void main(String[] args) {

        Block[] arrayOfBlocks = new Block[] {new Block(), new OreBlock(), new Block(), new OreBlock()};
        ArrayList<OreBlock> arrayListOfOreBlocks = new ArrayList<OreBlock>();
        for(Block block : arrayOfBlocks){
            if(block != null && block instanceof OreBlock){
                arrayListOfOreBlocks.add((OreBlock)block);
            }
        }
        OreBlock[] arrayOfOreBlocks = arrayListOfOreBlocks.toArray(new OreBlock[arrayListOfOreBlocks.size()]);
        System.out.println(arrayOfOreBlocks.length);
    }

}
封装测试;
导入java.util.ArrayList;
公开课考试{
静态类块{};
静态类OreBlock扩展块{};
公共静态void main(字符串[]args){
Block[]arrayOfBlocks=new Block[]{new Block(),new OreBlock(),new Block(),new OreBlock()};
ArrayList ArrayListForeBlocks=新的ArrayList();
用于(块:ArrayOfBlock){
if(block!=null&&block OreBlock实例){
arraylistoreblocks.add((OreBlock)block);
}
}
OreBlock[]ArrayStoforeBlocks=arrayListOfOreBlocks.toArray(新的OreBlock[arrayListOfOreBlocks.size());
System.out.println(ArrayForeblocks.length);
}
}

当我运行它时,它会像预期的那样打印2。

要求提供一个这样的例子是不是太过分了,到现在为止从未使用过数组,无需使用数组。不管你是谁,我添加了它。