2

可能重复:
什么时候应该封装泛型类型?

我开始在 java 中使用泛型,但在定义它们时遇到了一个大问题,因为我的代码很快变得难以阅读,例如:

PriorityQueue<Vertex<Integer, VertexValue, Integer, EdgeValue>> Q = new PriorityQueue<Vertex<Integer, VertexValue, Integer, EdgeValue>>(10, new AugPathPQSuperawesomeComparator());

这段代码有多个实例。

有没有办法通过使用类似的东西使它变得更小:

V = Vertex<Integer, VertexValue, Integer, EdgeValue>
PriorityQueue<V> Q = new PriorityQueue<V>(10, new AugPathPQSuperawesomeComparator());
4

3 回答 3

1

是的,您可以定义自己的类型,例如

class MyContainer {
  Vertex<Integer, VertexValue, Integer, EdgeValue> myComplexElt = new ...;

  // define methods for this class
  // using eclipse source->generate delegate methods
}

您也可以继承类型,但这通常是一个更糟糕的主意。

于 2013-01-17T12:26:05.343 回答
1

就像是。

class VPrioQueue<EV> extends PriorityQueue<Vertex<Integer, VertexValue, Integer, EV>> {
}
于 2013-01-17T12:31:56.033 回答
0

在不引入其他类型的情况下,一种非常快速且简单的方法可以使语句变得更小:

从 Java 1.7 开始,有菱形运算符可以让您跳过赋值中的类型语句。因此,您可以将代码重构为:

PriorityQueue<Vertex<Integer, VertexValue, Integer, EdgeValue>> Q = new PriorityQueue<>(10, new AugPathPQSuperawesomeComparator());
于 2013-01-17T12:27:00.777 回答