试图访问另一个类中的方法

坦佩利斯1

因此,我想编写一段代码,循环遍历包含类的不同实例的链表,挑选具有特定 ID 的实例,运行该实例类中包含的方法并更改特定于该实例的变量。但是,我似乎无法访问给定对象中包含的方法。关于如何从其他类访问方法的任何想法?

public void tick() {
    for(int i=0; i < handler.object.size() ;i++) {
        GameObject tempObject = handler.object.get(i);
        if (tempObject.getId() == ID.FlashCardCover){
            //run a method in FlashCardCover class on this individual object
        }
    }   
}
斯蒂芬·P

您的原始代码:

public void tick() {
    for(int i=0; i < handler.object.size() ;i++) {
        GameObject tempObject = handler.object.get(i);
        if (tempObject.getId() == ID.FlashCardCover){
            //run a method in FlashCardCover class on this individual object
        }
    }   
}

如果我正确地解释了这一点,那么您有一些GameObjects 并且其中一种 GameObject 是FlashCardCover. 您可以通过检查“Id”(我将其称为“TypeId”或仅称为“Type”)来确定这一点

因此,当您遍历您的游戏对象时,您希望在该特定游戏对象实际上是 FlashCardCover 时调用某些方法。您可以通过调用该对象上的方法来做到这一点,比如说像tempObject.uncoverCard()——但当然你不能这样做,因为游戏对象没有uncoverCard方法。
这是您使用演员表的地方

public void tick()
{
    for (int i=0; i<handler.object.size(); i++)
    {
        GameObject tempObject = handler.object.get(i);
        if (tempObject.getId() == ID.FlashCardCover) {
            FlashCardCover c = (FlashCardCover) tempObject;
            c.uncoverCard();
        }
    }   
}

您已将 thetempObject转换为 aFlashCardCover并且是一个您可以在其上调用“uncoverCard”方法的对象。
演员不必分两行完成(我这样做是为了清楚起见)——您可以同时进行演员和调用,例如((FlashCardCover) tempObject).uncoverCard()

请注意,这一切都假设 FlashCardCover 是 GameObject 的子类,例如

public class FlashCardCover extends GameObject { ... }

如果没有,你会得到一个 ClassCastException

现在解释完所有内容......您不需要自己的类型代码来进行这种类型的转换,您可以使用它instanceof

if (tempObject instanceof FlashCardCover) {
    // do your thing
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章