2

重複の可能性:
いつジェネリック型をカプセル化する必要がありますか?

私は Java で Generics を使い始めましたが、次の場合のようにコードが急速に読めなくなるため、それらを定義する際に大きな問題に遭遇しました。

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 に答える