我是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)
我无法理解这种新类型的错误。任何帮助将非常感激。
答案 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方法,但它找不到它。 实现可比较,代码应该没问题。