Java 为什么我的类型转换不';你不能用物体吗?

Java 为什么我的类型转换不';你不能用物体吗?,java,arrays,object,Java,Arrays,Object,使用JavaSE11 我试图创建一个不同类的实例数组。我想从该数组访问isntance的特定方法。我用过类型转换,但不起作用 如何告诉java,我试图访问的方法就在那里 错误发生在代码的底部。类BillsUtilities具有showInfo方法。但是java给出了一个错误,该类对象没有该方法 public static void main(String[] args) { Object item[] = new Object[10]; int counter

使用JavaSE11

我试图创建一个不同类的实例数组。我想从该数组访问isntance的特定方法。我用过类型转换,但不起作用

如何告诉java,我试图访问的方法就在那里

错误发生在代码的底部。类BillsUtilities具有showInfo方法。但是java给出了一个错误,该类对象没有该方法

public static void main(String[] args) {

        Object item[] = new Object[10];
        int counter = 0;
        String newItem = "BillsUtilities";

        Date date = new GregorianCalendar(2001, Calendar.OCTOBER,12).getTime();
        int amount = 50;

        switch(newItem) {
            case "BillsUtilities":
                item[counter] = new BillsUtilities(date, amount);
                break;
            case "FriendsLover":
                item[counter] = new FriendsLover(date, amount);
                break;
            default:
                throw new IllegalStateException("Unexpected value: " + newItem);
        }

        (BillsUtilities) item[counter].showInfo();
    }
放松点,日本人

但在一般情况下,下一个片段更为正确:

if(item[counter] instanceof BillsUtilities)
    ((BillsUtilities) item[counter]).showInfo();
((BillsUtilities)项[计数器]).showInfo()是您想要的。(当前你正在铸造所有的东西,你首先需要铸造,然后调用在铸造对象上的方法),但是考虑到在编写代码的方式中,如果你的交换用例将创建一个FraveSoistor对象,那么你很可能会得到一个CLSASSCASTExchange。这个答案应该有帮助:
if(item[counter] instanceof BillsUtilities)
    ((BillsUtilities) item[counter]).showInfo();