簡體   English   中英

使用Comparable接口時發生類強制轉換異常

[英]Class cast Exception while using Comparable interface

當我嘗試執行以下代碼時,編譯器在第13行以“ java.lang.ClassCastException”引發錯誤。 有人可以讓我知道以下代碼有什么問題嗎?

package chapter11;

import java.util.*;

public class ComparableExample {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Item[] items = new Item[3];
        items[0] = new Item(102, "Duct Tape");
        items[1] = new Item(103, "Bailing Wire");
        items[2] = new Item(104, "Chewing Gum");

        Arrays.sort(items);
        for (Item i : items) {
            System.out.println(i.getNumber() + ":" + i.getDescription());
        }
    }
}

interface Comparable {
    int compareTo(Object o);
}

class Item implements Comparable {
    private int number;
    private String description;

    public Item(int number, String description) {
        this.number = number;
        this.description = description;
    }

    public int getNumber() {
        return number;
    }

    public String getDescription() {
        return description;
    }

    public int compareTo(Object o) {
        Item i = (Item) o;
        if (this.getNumber() < i.getNumber())
            return -1;
        if (this.getNumber() < i.getNumber())
            return 1;
        return 0;
    }
}

任何幫助表示贊賞,謝謝!

刪除您的Comparable接口,然后從Java api使用Comparable接口。 而且,也許你可以改變

public int compareTo(Object o) {
        Item i = (Item) o;
        if (this.getNumber() < i.getNumber())
            return -1;
        if (this.getNumber() < i.getNumber())
            return 1;
        return 0;
    }

進入:

public int compareTo(Object o) {
            Item i = (Item) o;
            if (this.getNumber() < i.getNumber())
                return -1;
            if (this.getNumber() > i.getNumber())
                return 1;
            return 0;
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM