相关疑难解决方法(0)

在Java中创建泛型类型的数组

所以我知道你不能"轻松地"在Java中创建一个泛型类型的数组(但你可以创建集合).我最近遇到了一个需要二维对象数组(即Generic)的情况.这是一个"粗略"的概念,它看起来像什么(不完整,但我想尽可能简短):

class Outer<T> {
  private Foo[][] foo;

  abstract class Foo extends Blah<T> {
    public List<T> getContents ();
  }

  abstract class Bar extends Foo {
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

所以代码中的某个地方我需要一个数组:

foo = new Foo[width][height];
Run Code Online (Sandbox Code Playgroud)

(我们知道不可能发生).但是,我试过这个:

foo = (Foo[][])Array.newInstance (Foo.class, new int[]{getWidth (), getHeight ()});
Run Code Online (Sandbox Code Playgroud)

虽然我不得不压制警告但编译器接受了.我想我的问题是"这会扼杀我在萌芽状态某处行?的成员'foo’被永远不会暴露于外(虽然类型Foo和Bar是).我知道这是丑陋的,但它肯定工程和救了我不必创建一些其他的"psedu-杂牌"的或许会导致类覆盖"外"类更多的麻烦.在此先感谢!


这可能会使事情更容易可视化

这更接近我实际做的事情; 当然,我实现了Map类中有许多支持方法和其他逻辑,我为了简洁起见而遗漏了这些方法.

    import java.lang.reflect.Array;
    import java.util.ArrayList;
    import java.util.List;

    interface Cell<T> {
        public void add (T t);
        public boolean remove (T t);
        public List<T> getAll ();
        public Map<T> getMap ();
    }

    class Map<T> {
        protected   BaseCell    map[][]; …
Run Code Online (Sandbox Code Playgroud)

java arrays generics

6
推荐指数
1
解决办法
7450
查看次数

标签 统计

arrays ×1

generics ×1

java ×1