我有以下代码可以在“ Java for Everyone”一书的第9章中实现:
package Inheritance;
import java.util.Scanner;
interface Comparable{
int compareTo(Object otherObject);
}
interface Measurable{
double getMeasure();
}
public class Bankaccount implements Comparable,Measurable {
private double balance;
private int counter;
public String account;
public Bankaccount(){
balance = 0;
counter = 0;
account = "";
}
public void Setaccount(String accountNumber,double amount){
account = accountNumber;
balance = amount;
}
public void Deposit(double amount){
balance = balance + amount;
counter = counter + 1;
System.out.println("account: "+ account + " has balance: " + balance);
}
public void Withdraw(double amount){
balance = balance - amount;
counter = counter + 1;
System.out.println("account: "+ account + " has balance: " + balance);
}
public double getBalance(){
return balance;
}
public void MonthEnd(){
counter = 0;
}
public void printMenu(){
System.out.println("Please choose your options to proceed: ");
System.out.println("D)eposit W)ithdraw M)onth end Q)uit");
}
public double getMeasure(){
return balance;
}
public int compareTo(Object otherObject) {
Bankaccount other = (Bankaccount) otherObject;
if (balance < other.balance) {
return -1;
}
if (balance > other.balance) {
return 1;
}
return 0;
}
然后按如下所示运行它:
public class Implementation {
public static void main(String[] args) {
//Implement Comparable Interface example
Bankaccount[] accounts2 = new Bankaccount[3];
accounts2[0] = new Bankaccount();
accounts2[0].Setaccount("SA001",10000);
accounts2[1] = new Bankaccount();
accounts2[1].Setaccount("SA001",5000);
accounts2[2] = new Bankaccount();
accounts2[2].Setaccount("SA001",20000);
System.out.println(accounts2[0].compareTo(accounts2[1]));
Arrays.sort(accounts2);
}
}
但是我的Comparable接口给了我以下错误。我已经在Bankaccount类中提供了compareTo方法,为什么它不起作用?
线程“主”中的异常java.lang.ClassCastException:类Inheritance.Bankaccount无法转换为类java.lang.Comparable(Inheritance.Bankaccount在加载程序“ app”的未命名模块中; java.lang.Comparable在加载程序'bootstrap'的模块java.base中) 在java.base / java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:320)
at java.base/java.util.ComparableTimSort.sort(ComparableTimSort.java:188)
at java.base/java.util.Arrays.sort(Arrays.java:1250)
at Inheritance.Implementation.main(Implementation.jav