このコードでresult = myDef.getRank() - inDef.getRank();
私はjava.lang.IllegalArgumentException:
を取得しています比較メソッドは、一般的な契約に違反しています!java.lang.IllegalArgumentException:比較メソッドがjava7のエラーを与える一般的な契約に違反しています
以下はコードスニペットです。この問題を解決するのを手伝ってください。
public int compareTo(Object inObj) {
int result = 0;
if (inObj instanceof OmsFeatureFacade) {
OmsFeatureFacade inFeature = (OmsFeatureFacade) inObj;
FeatureDefinition inDef = inFeature.getFeatureDefinition();
FeatureDefinition myDef = getFeatureDefinition();
if ((inDef == null) || (myDef == null)) {
return result;
}
// Handling of primary feature.
if (myDef.isPrimary() != inDef.isPrimary()) {
if (myDef.isPrimary()) {
return -1;
}
if (inDef.isPrimary()) {
return 1;
}
}
// Place all bolt on features under primary
if (myDef.isPrimaryPricePlan() != inDef.isPrimaryPricePlan()) {
if (myDef.isPrimaryPricePlan()) {
return -1;
}
if (inDef.isPrimaryPricePlan()) {
return 1;
}
}
// Handling of SC feature.
if (this.isSysGeneratedFeature() != inFeature.isSysGeneratedFeature()) {
if (this.isSysGeneratedFeature()) {
return -1;
}
if (inFeature.isSysGeneratedFeature()) {
return 1;
}
}
// First Sort by rank asc, if no rank, then getRank() returns very large number.
result = myDef.getRank() - inDef.getRank();
if (result != 0) {
return result;
}
// Group by price plan, and sort alpha asc.
result = myDef.getPricePlanCode().compareTo(inDef.getPricePlanCode());
if (result != 0) {
return result;
}
// Handling of main feature for price plan.
if (this.isMainFeature() != inFeature.isMainFeature()) {
if (this.isMainFeature()) {
return -1;
}
if (inFeature.isMainFeature()) {
return 1;
}
}
// Sort alpha asc.
result = myDef.getDescription().compareTo(inDef.getDescription());
if (result != 0) {
return result;
}
}
return result;
}
あなたの関数は、等価の場合のゼロを返すことはないと思います。 –
完全な 'compareTo'メソッドを送ってください。今のところ大丈夫です。 –
'myDef.getRank()'または 'inDef.getRank()'が 'minus'演算子では使用できない値を返しています – piyushj