【发布时间】:2016-11-23 11:06:21
【问题描述】:
好的,所以我有一个接口和 2 个实现它的类。唯一的问题是这两个类中都有未在接口中列出的方法。我有一个使用接口类型的 ArrayList 的测试类:
ArrayList<Company> employees = new ArrayList<Company>();
该计划旨在允许创建两个不同类别的员工
public class Salaried implements Company
和
public class Hourly implements Company
并允许与它们一起使用某些方法。这两个类都实现了接口,但也有自己独有的附加方法。
在测试类中,我尝试使用arrayList来存储创建的不同员工,以便以后可以使用他们的方法。但是程序不会编译,因为我在创建员工时使用了不在界面中的方法,并且它不会让我使用这些方法。
我应该如何解决这个问题?是接口内的错误还是类本身内的错误?
【问题讨论】:
-
如果是java 8,你可以使用
default方法 -
如果你不知道你指的是哪个类,你希望如何使用一个方法?
-
@shmosel 我知道我指的是哪个类。我的问题是,如果两个实现公共接口的类都需要从列表中访问以使用接口中未包含的方法,如何将它们放入单个 arrayList 中。
-
如果您知道它是哪个类,请使用该类的列表而不是接口。
-
这表明您的设计存在问题。一般来说,您应该在具有通用界面的级别上进行操作。提供一些具体示例可能有助于我们提出替代方案。