Hi,
I have a Service interface and multiple sub-interfaces that extend it,
with their own Implementations. How do I cast a Resource to the most
appropriate implementation?
The following client code checks sub-interfaces first and falls back
to the base interface:
if (serviceRes.canAs(com.atomgraph.linkeddatahub.model.dydra.Service.class))
service = serviceRes.as(com.atomgraph.linkeddatahub.model.dydra.Service.class);
else if (serviceRes.canAs(...) service = serviceRes.as(...);
...
else service =
serviceRes.as(com.atomgraph.linkeddatahub.model.Service.class); //
base interface
It does not look like a good solution however. I could probably move
this logic into the base ServiceImplementation, but I would still have
to modify it every time I add a new sub-interface that extends
Service.
Is there a more generic solution to this?
Martynas