gpt4 book ai didi

Java 泛型 - 什么时候需要参数化?

转载 作者:行者123 更新时间:2023-12-01 16:35:42 25 4
gpt4 key购买 nike

这是一个简单的例子:

class World<S extends Sprites, B extends Bodies> {

// Both of these have a problem...

static World world = null; // "World is a raw type. References to generic type
// World<BOD,SPRT> should be parameterized"

static World<S, B> world = null; // "Cannot make a static reference to the non-static type S
// "Cannot make a static reference to the non-static type B

// The following is allowed but looks ugly/fishy to me
static World<?, ?> world = null; //

如果您想知道,我正在尝试实现单例模式。挑战在于此类是在单独的包 GAME 中扩展的,并且我不能让该包(MODEL)对该 GAME 有任何依赖。因此构造函数必须是 MODEL。所以让构造函数将单例对象存储在MODEL中该类的静态变量中就可以了。

static World<?, ?> world = null;在你看来确实很丑,有没有更好的方法来解决这个问题?

最佳答案

您无法访问静态方法或字段中的泛型类型参数,如 this answer 中所述。 。因为静态字段在类的所有实例之间共享(在这种情况下,我猜您的类将是 Model),那么这将如何同时适用于 Model<Sprites, Bodies>Model<ClassA, ClassB>

关于Java 泛型 - 什么时候需要参数化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9334586/

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