类包含子类的一个元素

时间:2018-10-08 12:26:13

标签: java uml

给出下图,我想知道以下内容:

  • 如何确保普通轿车可以同时具有A型或B型GPS?

another example

3 个答案:

答案 0 :(得分:1)

由于最大多重性为1,因此缺少的所有示例图都是{complete,disjoint}的泛化集。现在,您的图表默认为{不完整,重叠},这意味着实例可以是A和B的成员,也可以只是GPS的成员。

答案 1 :(得分:0)

如何使用这样的泛型?

public class A<T extends B> {
    List<T> list = new ArrayList<>();

    public List<T> getList() {
        return list;
    }

    public void setList(List<T> list) {
        this.list = list;
    }
}

public class B {
}

public class C extends B {
}

public class D extends B {
}

然后您将用所需的B子类型实例化类A,如下所示:

A<C> a = new A<>();
C c = new C();
D d = new D();
a.getList().add(c); //works fine
a.getList().add(d); //compile error

答案 2 :(得分:0)

从评论中取出水果篮,您需要为0..n而不是1指定一个多重性。

如果希望所有实例都是相同的子类,则需要以任何方式添加约束。如果您的工具不允许使用,只需添加带有{ all instances of B must have the same type }之类的注释。