gpt4 book ai didi

Java多类型变量

转载 作者:行者123 更新时间:2023-12-01 23:30:15 26 4
gpt4 key购买 nike

我正在使用 Slick2D 创建一个简单的游戏,我有一个类是所有游戏对象的基础,它有一个 Image 变量。但现在我想添加一个动画对象,因此我需要使用 Animation 类而不是 Image 类。

然而,图像和动画没有共同的父类(super class),尽管它们具有相同签名的方法(例如绘制、getWidth、getHeight)。我知道它们都实现了 Renderable,但这对 getWidth 或 getHeight 没有帮助。

那么我怎样才能拥有一个可以是图像或动画类型的变量呢?

(在 Objective-C 中,你可以有类型为 id 的变量);

最佳答案

在 Java 中,没有像 Objective-C 中那样的 id 类型。但是(正如其他人已经指出的那样)您可以定义自己的抽象类(或接口(interface))并用该类替换 Image 属性。然后只需提供围绕您已使用的类型的特定类型的实现即可。

public interface Graphic {
public int getWidth();
public int getHeight();
// other methods
}

public class ImageGraphic implements Graphic {

private final Image image;

public ImageGraphic(Image image) {
this.image = image;
}

public int getWidth() {
return image.getWidth();
}

public int getHeight() {
return image.getHeight();
}

}

注意:AnimationGraphic 类将遵循相同的方法。

我推荐这种方法而不是 Tenner 的方法,因为这样您的代码就不会依赖于扩展将来可能不存在(或可能更改)的类。这样,当这些代码更改到达时,您只需更改很少的代码,并且比从库类扩展更麻烦。

关于Java多类型变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19453514/

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