我从一个返回Set Object的api调用一个方法。据我所知,Set是一个接口,你无法实例化一个接口。我可以使用这个集合并调用onArray()。什么是Set实际返回呢?
答案 0 :(得分:5)
确实会返回Set
,但您必须明白,Set
不仅仅是界面:
可以返回实现Set
的每个类的每个实现。
public Set getMySet(){
return new HashSet();
}
因为HashSet
实现了Set
,所以这是有效的代码。
将应用程序编写到接口而不是它们的实现是一种广泛使用的做法。毕竟,您需要编写(并测试)您的代码(例如使用服务的UI),就是界面。
你还没有得到具体的实现,它们甚至可能还不存在,但你已经可以做你需要做的所有工作。
答案 1 :(得分:1)
从方法返回接口意味着返回的对象将实现该接口。
在这种情况下,它意味着返回的对象将实现'Set'。您将能够调用该接口中包含的方法,但无法从实现类中调用方法。