【发布时间】:2020-10-23 15:50:44
【问题描述】:
使用 Java SE 11
我正在尝试创建一组不同类的实例。我想从该数组访问实例的特定方法。我使用了类型转换,但它不起作用。
如何告诉java,我尝试访问的方法在那里?
错误发生在这段代码的底部。 BillsUtilities 类具有 showInfo 方法。但是java报错了,那个类Object没有那个方法。
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();
}
【问题讨论】:
-
((BillsUtilities) item[counter]).showInfo();是你想要的。 (您当前正在转换所有内容,您首先需要转换,然后在转换的对象上调用该方法)但是考虑到代码的编写方式,如果您的 switch case 将创建,您很可能会得到一个 classcastexception一个 FriendsLover 对象。 -
这个答案应该会有所帮助:https://stackoverflow.com/a/5762277/7994967