2017-07-19 61 views
-1

假设有一个称为实体的接口,有许多类实现它。 我需要创建一个类,该类的每个实例,它集将只包含实现该接口的实体对象,但是从相同实施类,例如 - 如果人与自行车实现接口实体,然后该类的一个实例将只有一个完整的集合,只有Person对象或Bicycle对象,但不能同时存在。 我感谢您的帮助!如何执行只包含实现接口但来自同一个实现类的对象的Collection?

+0

'收集 theCollection'(RESP。'收藏 ...')!?真的,你的问题有点不清楚。 – Seelenvirtuose

+0

无法通过Java的类型系统(如,你不能保证在列表中的一切都是一个确切的类型,而不是类型的子类,但是你的设计不应该要求你)。您所能做的只是在运行时验证列表中实例的类型。 –

+0

你可以声明一个带有多个边界的有界类型(''),但我并没有真正看到这一点。你能分享一些代码吗? –

回答

0
public class Something<T extends Entity> { 
[...] 
private Collection<T> entities; 

T将永远是一个类实现Entity。您可以在此课程的所有方法中使用T

0

如果你真的想这样做,你可以写你自己的附加功能,并与类集合中的第一个对象的比较类新的对象。 (如果您的收藏中没有物品,只是添加它)

void add(Entity ent) { 
    if (collection == null) { 
     collection = new Collection<Entity>(); 
     collection.add(ent); 
    } 
    else if(ent.getClass().equals(collection.get(0).getClass()) { 
     collection.add(ent); 
    } 
    else { 
     // wrong class error handling here 
    } 
} 

就是这样的。

+0

你能否提供一些示例代码? – WhatsThePoint