HDa*_*ave 2 java collections casting set
这是一个真正的新手的基本Java问题.我有一组Java对象(类"MyClass")实现某个接口(接口"MyIfc").我有一组这些对象存储在我的类中的私有变量中,声明如下:
protected Set<MyClass> stuff = new HashSet<MyClass>();
Run Code Online (Sandbox Code Playgroud)
我需要提供一个公共方法,将此集作为"MyIfc"类型的对象集合返回.
public Collection<MyIfc> getMyStuff() {...}
Run Code Online (Sandbox Code Playgroud)
我该如何进行转换?以下行给出了一个错误,它无法进行转换.我猜想编译器知道类MyClass的对象实现了MyIfc,因此会处理它.
Collection<MyIfc> newstuff = stuff;
Run Code Online (Sandbox Code Playgroud)
任何启示都表示赞赏.
可能最正确的方法是:
return new HashSet<MyIfc>(stuff);
Run Code Online (Sandbox Code Playgroud)
如果班级太大而无法做到这一点,你可以这样做:
return Collections.unmodifiableSet(stuff);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20243 次 |
最近记录: |