我正在使用 Java 开发库存程序。我将库存中的每个对象都存储为每个位置的相关DefaultListModel
类类型;JList
例如,如果我在“Dorm”位置有一个名为“Mulan”的视频和一个名为“Ball”的通用事物,在JList
名为“Dorm”中,“Mulan”将是一个实例,video
“Ball”将是一个实例的thing
。所有的类都继承自thing。
我正在尝试做这样的事情......
Dorm.getSelectedValue().methodInVideoOrThing;
...但是当我尝试它时,它说:
error: cannot find symbol
Dorm.getSelectedValue().methodInVideoOrThing();
^
symbol: method methodInVideoOrThing()
location: class Object
因为 DefaultListModel 将每个对象存储在一个通用object
变量中,所以我无法访问我创建的任何类的方法。我试过这个...
class c = Dorm.getSelectedValue().getClass();
c A = (c) Dorm.getSelectedValue();
A.methodInC;
...但它返回了以下错误:
error: cannot find symbol
c A = (c) Dorm.getSelectedValue();
^
symbol: class c
error: cannot find symbol
c A = (c) Dorm.getSelectedValue();
^
2 errors
symbol: class c
我知道我可以isInstanceOf
根据具体情况循环遍历所有使用和向下转换的类,但这会非常乏味。另外,当我做...
System.out.println(Dorm.getSelectedValue().getClass());
...它返回class video
or class thing
,具体取决于选择的是“Ball”还是“Mulan”,所以我知道 java 知道它是什么类。
那么,当该子类存储为对象类型的变量时,是否有某种方法可以访问子类的方法,而无需向下转换?或者有没有办法通过向下转换来做到这一点,而我只是做错了?