生成类的只读副本,howto

Jam*_*sev 5 java casting

给定以下UML表示,我如何获得a的实例BullDog,只暴露了getter方法?

  • BullDog不应该有任何setter方法的实例.
  • BullDog应该只有getter方法(其中3个)可用的实例

基本上问题是......我该怎么做new BullDog

在此输入图像描述

Sim*_*n G 4

由于 HealthyPet 和 Pet 不相关,因此您无法转换为所有 3 个 getter 方法(getMetabolism()、getName() 和 getAge())。现在,如果 HealthyPet 扩展了 Pet(我真的不确定为什么不扩展),那么您就可以开展业务了。因为这样你就可以转换为 HealthyPet,返回该接口,并且调用者只会看到 3 个 getter 方法(当然,我说的是没有花哨的内省,这应该允许他们发现一切)。