没有实施可比较

时间:2013-11-07 04:14:17

标签: java

我是java的新手。我正在学习接口,我正在尝试执行以下操作:

package comparator;
import java.io.*;
import java.util.*;

public class comparator {
    public static bankAccount ba=new bankAccount(80);
    public static void main(String args[]){
    method1(ba);
    }
    public static void method1(bankAccount ba1){
        bankAccount ba2=new bankAccount(80);
        int c=((Comparable) ba1).compareTo(ba2);
        System.out.println(c);
    }
}
class bankAccount{
    public double balance;
    public A(double bal){
        balance=bal;
    }
}

但我收到的错误如下:

Exception in thread "main" java.lang.ClassCastException: comparator.bankAccount cannot be cast to java.lang.Comparable
    at comparator.comparator.method1(comparator.java:25)
    at comparator.comparator.main(comparator.java:20)

我无法理解这种新类型的错误。任何帮助将非常感激。

7 个答案:

答案 0 :(得分:3)

您根本无法将bankAccount类型的对象转换为Comparable。您需要在Comparable课程中实施bankAccount界面并覆盖compareTo()方法。

public class bankAccount implements Comparable {
    @Override
    public int compareTo(Object o){
        // TODO Auto-generated method stub
        // Your logic goes here
        return 0;
    }
}

答案 1 :(得分:2)

您在哪里定义了bankAccount类? (旁注:在Java类中通常是UpperCamelCase。所以应该是BankAccount)。

为了将bankAccount对象强制转换为Comparable,bankAccount类必须实现Comparable接口。即。

public class BankAccount implements Comparable {
...
    public int compareTo(Object o) {
    ...
    }
}

通过实现Comparable,您还必须定义compareTo(Object o)方法。

答案 2 :(得分:1)

您的bankAccount class需要实施Comparable界面。

class bankAccount implements Comparable{
   public int compareTo(Object obj){
    .......
  }
}

答案 3 :(得分:1)

为了将它转换为Comparable,它需要实现Comparable,你需要有一个compareTo函数。

将班级声明更改为

public static class Comparator implements Comparable<Comparator> {

并确保实现compareTo函数,以便它知道如何比较其中两个!

答案 4 :(得分:1)

您需要在对象上实现接口Comparable以比较您想要的内容;或者你可以写一个Comparator,实例化并调用它,传递你想要比较的两个对象。或者比较对象的两个字段,这些字段是某种类型,例如String已经实现了可比较的字段。

答案 5 :(得分:0)

  

考虑以下示例实现以使用比较方法I.   已经创建了一个BankAccount Pojo,拥有最属性的AccountNo和   AccountName,它可以是你案件中的任何财产..在我的情况下   accountNo也是独一无二的。

  public class BankAccount implements Comparable {
    int accoutnNo;
    String accountName;

    public String getAccountName() {
        return accountName;
    }
    public void setAccountName(String accountName) {
        this.accountName = accountName;
    }
    public int getAccoutnNo() {
        return accoutnNo;
    }
    public void setAccoutnNo(int accoutnNo) {
        this.accoutnNo = accoutnNo;
    }
    public int compareTo(Object bAccount) {
        int thisAccount = ((BankAccount) bAccount).getAccoutnNo();
        //      ascending order
        return this.accoutnNo - thisAccount;
        //      descending order
        //return thisAccount -this.accoutnNo ;
    }
}

现在您可以使用主要方法中的可比较

答案 6 :(得分:0)

您是否在

中实现了Comparable接口?
public class bankAccount implements Comparable {

你在bankAccount上使用compareTo方法,但它找不到它。 实现可比较,代码应该没问题。