1

JUNG2Transformerを使用した視覚化で、ノードの形状とサイズを独自に作成しようとしています。

しかし、私はタイピングの問題に遭遇し続けています。問題を次の例に絞り込みました。

PluggableRenderContext in JUNGは、 の単純なインスタンス化を行いますConstantTransformer。ここで、V は頂点タイプです。

protected Transformer<V,Shape> vertexShapeTransformer = 
    new ConstantTransformer(
    new Ellipse2D.Float(-10,-10,20,20));

ただし、Scala で独自のインスタンス化を行うと、

val vertexShapeTransformer: Transformer[Int, Shape] =
  new ConstantTransformer(new Ellipse2D.Float(-10,-10,20,20));

入力エラーが発生します。

type mismatch;
found: org.apache.commons.collections15.functors.ConstantTransformer[java.awt.geom.Ellipse2D.Float]
required: org.apache.commons.collections15.Transformer[Int,java.awt.Shape]"

私が理解している限り、型は概念的に互換性があります: ConstantTransformeris-aTransformer[Object, Shape]Ellipse2Dis-aShapeです。

要するに、ScalaIntObject. ただし、この問題の解決策を見つけることはできませんが、結果としてライブラリのこの部分全体が使用できなくなるとは想像できません。

私はそれについて何ができますか?

4

1 に答える 1

1

型に関しては、scala に少し手伝ってもらう必要があるかもしれません。これが機能するかどうかはわかりませんが、次のように入力してみてくださいConstantTransformer

  val vertexShapeTransformer: Transformer[Int, Shape] =
    new ConstantTransformer[Shape](new Ellipse2D.Float(-10,-10,20,20))

アップデート

これは機能するはずです。Transformer に渡すことができる型は、整数 (Int ではありません) までです。

  val vertexShapeTransformer: Transformer[_ >: Integer, Shape] =
    new ConstantTransformer(new Ellipse2D.Float(-10,-10,20,20))
于 2013-03-28T19:46:50.987 に答える