gpt4 book ai didi

java - 实体 Sprite 怪物实体实例...就这么简单但不起作用?

转载 作者:太空宇宙 更新时间:2023-11-04 08:34:49 25 4
gpt4 key购买 nike

我有这样的代码:

class Entity;

class EntityTool extends Entity;
class EntitySprite extends Entity;

class EntityToolSpoon extends EntityTool;
class EntityToolBow extends EntityTool;
class EntitySpritePlayer extends EntitySprite;
class EntitySpriteMonster extends EntitySprite;

现在我在 Entity 中有一个名为 move() 的方法,其他一些方法会覆盖它。

现在,如果参数是 EntitySpriteMonster,为什么这不起作用:

public void foonction(Object wut)
{
if (wut instanceof Entity) ((Entity)wut).move(x,y);
}

移动函数(尽管这是多余且不必要的。它在 if rawpeek instanceof... 处失败):

@Override
public void move(double x, double y) {
super.move(x, y);
for (int i=0; i<8; i++) {
Object rawpeek = palette.get(i);
System.out.println(rawpeek);
if (rawpeek == null) continue;
if (rawpeek instanceof Entity)
((Entity) rawpeek).move(x, y);
}
}

编辑:它只是中止。 (操作符instanceof返回false)

Eclipse 在调试中向我展示,wut 绝对是一个 EntitySpriteMonster

最佳答案

我知道这样的代码失败的唯一原因(当 wut 已被验证为正确类型时)是 wut 的类是由与您的类中的 Entity 不同的类加载器加载的。

Java 中的类由其包名称、简单名称加载它的类加载器来标识。因此,mypackage.Entity 可能mypackage.Entity如果是由单独的类加载器加载的不同。

这通常仅在您使用某种插件机制(OSGi,...)时才会发生。你用过这样的东西吗?

关于java - 实体 Sprite 怪物实体实例...就这么简单但不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6647387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com