这是一个 Android 应用程序,但大概在 Java 中也是如此。我有一个 LevelFactory 类型,从中派生 Level1Factory、Level2Factory 等。我想要这些类的数组,以便我可以在给定数组索引的情况下实例化一个级别。
我可以只拥有一个 Class[] 并将它们放入其中,然后在需要使用它们时将它们强制转换为 LevelFactory,但我想知道正确的做法是什么。
这显然是一个错误“不兼容的类型”:
new Class<LevelFactory>[] {Level1Factory.class,Level2Factory.class};
然而,我惊讶地发现这也是一个错误“通用数组创建”:
new Class<? extends LevelFactory>[] {Level1Factory.class,Level2Factory.class};
以下方法有效,但在分配给变量时会给出“未检查分配”警告:
new Class[] {Level1Factory.class,Level2Factory.class};
最后一个是我可以开始工作的唯一选择。我只是忽略了警告,但如果真的可能的话,我想使用泛型来做到这一点。