什么是“类型不匹配”?以及如何解决? [英] What is "Type mismatch" and how do I fix it?

查看:615
本文介绍了什么是“类型不匹配”?以及如何解决?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何解决此错误?


类型不匹配:无法从元素类型Object转换为Block

Type mismatch: cannot convert from element type Object to Block

我在这一行看到它:

for (Block b : blocksToSkip){

这里是完整代码。

@EventHandler(priority=EventPriority.NORMAL, ignoreCancelled=true)
public void onEntityExplode(EntityExplodeEvent ev){
    ArrayList blocksToSkip = new ArrayList();
    Location rootLoc = ev.getLocation();
    if (!SkyMagic.IsInIslandWorld(rootLoc)) return;
    for (Block b : ev.blockList()){
        Location loc = b.getLocation();
        IslandData data = SkyMagic.GetIslandAt(loc);
        if ((data != null) && (data.owner != null)){
            blocksToSkip.add(b);
        }
    }
    for (Block b : blocksToSkip){
        ev.blockList().remove(b);
    }
}


推荐答案

此是原始类型

ArrayList blocksToSkip

Java期望所有内容,而不仅仅是 Block 类型。
因此,您需要进行类型转换

Java expects everything, not only the Block type. Therefore, you need a type cast.

ArrayList blocksToSkip = new ArrayList();

// Rest of your code

for (Object b : blocksToSkip){
    ev.blockList().remove( (Block)b );
}

请注意,不建议使用原始类型。
您应该参数化

Note it is discouraged to use raw types. You should parameterize instead.

ArrayList<Block> blocksToSkip = new ArrayList<Block>();

这篇关于什么是“类型不匹配”?以及如何解决?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆