什么是将一组Java对象转换为另一组对象的最佳方法?

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)

任何启示都表示赞赏.

Yis*_*hai 6

可能最正确的方法是:

    return new HashSet<MyIfc>(stuff);
Run Code Online (Sandbox Code Playgroud)

如果班级太大而无法做到这一点,你可以这样做:

    return Collections.unmodifiableSet(stuff);
Run Code Online (Sandbox Code Playgroud)