4

私のプロジェクトの最初の部分は、ハイパーグラフを構築することです

これは簡単に描いた UML ダイアグラムですここに画像の説明を入力

頂点クラス

    public abstract class Vertex <T>{

int vertexId ;
T vertexValue ;

public  abstract <T> T setVertexValue();

    }

imageVertex クラス

   public class ImageVertex extends Vertex<Map<String, Instance>>{

@Override
public <T> T setVertexValue() {
    // TODO Auto-generated method stub
    return null;
}}

タイプは、imageVertex Map に定義し、後で tagVertex を String として定義すると、自動的に推測されると考えていました。

ジェネリックを間違って使用しましたか?

4

5 に答える 5

2

for を削除<T>Vertex.setVertexValueます。

public abstract T setVertexValue();
于 2013-04-12T09:17:57.180 に答える
2

タイプ T on を再定義しましたsetVertexValue。これを使って。

public abstract class Vertex <T>{

int vertexId ;
T vertexValue ;

public  abstract T setVertexValue();

}

ジェネリックを適切に使用します

public class ImageVertex extends Vertex<Map<String, String>>
{

    @Override
    public Map<String, String> setVertexValue()
    {
        // TODO Auto-generated method stub
        return null;
    }

}
于 2013-04-12T09:18:26.387 に答える
1

このようなものがうまくいくはずです。

public abstract T setVertexValue();

削除する<T>

于 2013-04-12T09:34:52.783 に答える
1

setVertexValue()タイプパラメータ自体があり<T>ます。つまり<T>、クラスの型パラメーターを再定義します。メソッド宣言は次のようになります

public  abstract T setVertexValue();

( がないことに注意してください<T>)

于 2013-04-12T09:19:16.767 に答える