4

2つのポートがあるコネクタがあります。2つのポートには、として共通のルートがありResourceます。これら2つのポートの共通ルートを見つけようとしています。

getParentメソッドを介して見つけることができる1つのポート(p1)の要素のセットが必要です。他のポート(p2)については、p2の要素のいずれかがセットに存在するかどうかを確認する必要があります。タイプのオブジェクトを返すためにこのメソッドが必要Resourceですが、この時点で少し行き詰まっています。次のエラーが発生します。

ロード中の予期しない問題:'java.lang.ClassCastException:policy.vddl.model.Resourceをjava.lang.Comparableにキャストできません' java.lang.ClassCastException:vddl.model.Resourceをjava.lang.Comparableにキャストできませんjava.util.TreeMap.compare(Unknown Source)at java.util.TreeMap.put(Unknown Source)at java.util.TreeSet.add(Unknown Source)at vddl.product.Product.findCommonRoot(Product.java:357)

private Element findCommonRoot(Connector connector)
{

    List<Port> portList = getListOfPort(connector);
    Port p1 = portList.get(0);
    Set<Element> portElementSet = new TreeSet<Element>();

    Element pathElement = p1.getParent();
    while (pathElement != null)
    {
        portElementSet.add(pathElement);
        pathElement = pathElement.getParent();
    }

    Port p2 = portList.get(1);
    Element pathElement2 = p2.getParent();

    for(Element e: portElementSet)
    {
        if(portElementSet.contains(pathElement2))
            pathElement2 = e;
    }

    return pathElement2;
}
4

4 に答える 4

4

TreeSet要素を並べ替えるComparableので、要素が実装されていることを確認する必要がありますComparable

ソースコードにアクセスできない場合は、のコンストラクタでのElementインスタンスを渡すことができます。ComparatorTreeSet

于 2012-06-13T09:45:24.023 に答える
4

要素を並べ替える必要がない場合は、HashSet代わりに使用してください。ソートされておらず、要素を比較可能にする必要はありません。TreeSetHashSet

于 2012-06-13T09:48:10.113 に答える
0

TreeSetソートされたセットです。object追加するものはすべて、インターフェースTreeSetを実装する必要がありComparableます。ツリーセットのメソッドの追加については、Javaドキュメントを参照してください

于 2012-06-13T09:45:44.910 に答える
0

インターフェイスElementを実装する必要がありComparableます。

于 2012-06-13T09:46:45.517 に答える