1
このコードは、Generable型のComparableを使用し、myクラスはComparable Interfaceを実装しています。 ComparableをT#1に変換できないことを示すクラスのcompareTo()メソッドでエラーが発生しました。これをT#1に変換することはできません
完全なエラーメッセージは - >
Edge.java:40: error: method compareTo in interface Comparable<T#2> cannot be applied to given types;
return (this.weight).compareTo(e.weight());
^
required:
T#1 found: Comparable reason: argument mismatch; Comparable cannot be converted to T#1 where
T#1,T#2 are type-variables:
T#1 extends Comparable<T#1> declared in class Edge
T#2 extends Object declared in interface Comparable
1 error
(this.weight)はタイプ 'T' の代わりに、同等を返すべきではないでしょうか。 また、weight()メソッドはComparableを返します。
これは完全にわかりません。誰かがなぜこのエラーを受け取ったのかを明確にすることができれば嬉しいです。 this.weight()をthis.weight()に置き換えるとエラーになります。
public class Edge<T extends Comparable<T>> implements Comparable<Edge>{
private int vertex1;
private int vertex2;
private T weight;
public Edge(int vertex1, int vertex2, T weight){
this.vertex1 = vertex1;
this.vertex2 = vertex2;
this.weight = weight;
}
public int either(){
return vertex1;
}
public int from(){
return vertex1;
}
public int other(){
return vertex2;
}
public int to(){
return vertex2;
}
public Comparable weight(){
return weight;
}
public String toString(){
String s = "";
s += vertex1 + " " + vertex2 + " " + weight;
return s;
}
@Override
public int compareTo(Edge e){
return (this.weight).compareTo(e.weight());
}
}
ありがとうございます。私は提案された変更を行いましたが、私はまだこのようにもう一方のインスタンスでweightを使用し、weight()メソッドでエラーを受け取りました - > return(this.weight).compareTo(e.weight());なぜ私はエラーを受け取るのですか?(ComparableはTに変換できません) –
@DeeptiSabnaniあなたのメソッド 'weight()'が、 'T'の代わりに' Comparable'を返すので、上記の私の答えでも述べました。 – Jesper